【问题标题】:Django redirect to another viewDjango 重定向到另一个视图
【发布时间】:2020-01-01 09:12:54
【问题描述】:

我在根据Django topic 从一个视图重定向到另一个视图时遇到小问题。

已经阅读了一些答案,例如:ans_1ans_2ans_3,但找不到解决方案。

反而得到一个错误:

Reverse for 'add_tasks_continue' not found. 'add_tasks_continue' is not a valid view function or pattern name.

目标: 使用一些数据从一个视图重定向到另一个视图。

我的视图函数:

def add_day_tasks(request):
    users = User.objects.all()
    if request.method == "POST":
        ...
        return redirect('add_tasks_continue', data=locals())

def add_tasks_continue(request, data):
    ...
    return render(request, 'eventscalendar/add_task_continue.html', locals())

我的网址:

app_name = 'calendar'
urlpatterns = [
    url(r'^$', calendar),
    url(r'^calendar/add_day_task/$', add_day_tasks),
    url(r'^calendar/add_task_continue/$', add_tasks_continue, name='add_tasks_continue'),
]

感谢大家的宝贵时间

【问题讨论】:

  • 为什么传递data?您的 URL 不希望这样。 (以后请准确说明您遇到的问题,目标不是“找不到解决方案”。)
  • @DanielRoseman 数据是字典 [描述已更新]。使用这种方法,我仍然需要将正则表达式模式传递到 url?
  • @ZarakiKenpachi:没有内置的字典路径转换器,而且很可能在(不久的)将来不会有。 URL 不是传输如此大量数据的好方法。
  • @WillemVanOnsem 如何将数据从一个视图传输到另一个视图?
  • @ZarakiKenpachi:你通常不会那样做。通常 url 和 GET 和 POST 数据用于传输 small 数量的(通常是标量)数据。需要持久化的项目存储在数据库中。顺便说一句,使用locals() 也不是一个好主意:您将如何传输通用对象?

标签: django


【解决方案1】:

由于add_tasks_continue(request, data) 有一个参数“数据”,因此您的网址中应该有(?P<data>…)。这就是我想说的。 它可能是 url(r'^calendar/add_task_continue/(?P<data>[a-z]+)$', add_tasks_continue, name='add_tasks_continue') 要不然 url(r'^calendar/add_task_continue/(?P<data>\d+)$', add_tasks_continue, name='add_tasks_continue')。 但是,您应该记住 url 是字符串,因此“data”应该是出现在 url 中的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2012-02-10
    相关资源
    最近更新 更多