【发布时间】:2020-05-23 01:13:50
【问题描述】:
我想在 Django 的两个视图之间发送数据。主要逻辑是,在主法师上,我有一个简单的表单,可以在其中输入 url。提交后,我从这个 url scrape 数据并重定向到端点 /bokeh。从这个端点我想去端点 /days (从导航栏)并在相同的给定 URL 上操作。我试图使用会话,但效果不佳。我的代码如下:
views.py
def home(request):
if request.method == 'POST':
url = request.POST['url']
request.session['url'] = url
return redirect('bokeh',url=url)
return render(request,'home.html')
def bokeh(request,url):
cl = CalculationLogic()
return cl.get_data_from_url(request,url)
def days(request,url):
cl = CalculationLogic()
url = request.session.get('url')
return cl.show_days_of_the_week(request,url)
因此,在将数据从 home.html 发送到散景之后,一切都很好,我开始执行 CalculationLogic。当我想去几天时,我得到 NoReverse Match 错误:
NoReverseMatch at /days/https://github.com/USER/PROJECT/commits/master
Reverse for 'days' with keyword arguments '{'url': ''}' not found. 1 pattern(s) tried: ['days/(?P<url>.+)']
我的网址看起来像:
urlpatterns = [
....
url(r'^days/(?P<url>.+)',views.days,name='days'),
....
]
在我的 base.html 文件中:
<body>
<nav>
<a class="nav-link" href="{% url 'days' url=url %}">Days</a>
</nav>
</body>
有谁知道为什么这个解决方案不起作用?
【问题讨论】: