【问题标题】:Sending data between views in Django在 Django 中的视图之间发送数据
【发布时间】: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>

有谁知道为什么这个解决方案不起作用?

【问题讨论】:

    标签: python django session


    【解决方案1】:

    你没有忘记在你的主页视图中分配一个值:request.session['url'] = url 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多