【问题标题】:Sending a parameter to a view向视图发送参数
【发布时间】:2014-10-16 10:10:31
【问题描述】:

基本上在发帖后,我想重新渲染另一个视图并向其发送一个参数,但我仍想将其定​​向到正确的 url。我不想使用像 /?confirm=true

这样的 url 参数

网址:

url(r'^$', 'index', name='home'),

def index(request, confirm=None):
    return ...

我正在尝试发送索引视图参数confirm=True

return redirect('home', kwargs={'confirm':True})

所以这不起作用,因为 kwargs 想要将 URL 模式与 /confirm/ 匹配,但我不想这样做,我只是想向视图发送一些值并从另一个视图呈现该视图。

【问题讨论】:

  • “将其定向到正确的 URL”是什么意思?您的意思是要保留与您发布到的页面相同的 URL,还是要重定向到的位置的正常 URL?
  • 我不想渲染带有发布到的 url 的视图,我想渲染原始 url,或者帖子来自哪里
  • 你考虑过使用ajax吗?
  • 不,我暂时不想用,以后可能会用

标签: python django django-views


【解决方案1】:

如果您不想在 URL 中传递参数,则需要以其他方式传递。唯一真正做到这一点的方法是使用会话:在帖子视图中设置会话变量,并在索引中检查它。

def process_post(request, ...):
    ... do whatever ...
    request.session['confirm'] = True
    return redirect('home')


def index(request):
    confirm = request.session.pop('confirm', None)
    if confirm:
        ...

【讨论】:

    【解决方案2】:

    我不确定我是否理解这个问题。你本质上是在尝试这样做吗?

    (r'^your_app_view/(?P<app_value>.+)/$',views.your_view)
    

    然后在 your_view 中,您可以访问 app_value 做任何您需要的操作并重定向到另一个视图。

    然后您是在问如何将该参数传递给第一个视图正在调用的第二个视图?

    如果是这样,那么这个 SO 答案应该会对您有所帮助。 Django return redirect() with parameters

    【讨论】:

    • 看看我的 url 模式,它不需要参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多