django无法扭转项目层面的看法?

时间:2018-01-31 23:01:08

标签: python django

我试图在POST成功后重定向到视图。如果我尝试添加一个kwargs,不知道为什么它不起作用。我试图在没有额外参数的情况下反转它并且它有效。但是当我添加一些条件语句所需的附加变量时,会导致错误。

我已经检查了文档,这里提出的一些问题和名称空间是解决方案,但据我所知,它适用于应用程序级别。我在项目下创建了视图。

项目urls.py

from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('', views.Index_With_Email_Subscription, name="index"),
    path('humongousdata/', admin.site.urls),
    path('termsofservices/', views.Terms_Of_Services, name="termsofservices"),
    path('me/', include('me.urls')),
    path('thankyou/', views.ThankYou, name="givethanks"),
]

项目views.py

from django.shortcuts import render, redirect
from django.urls import reverse

def index(request):
    return redirect(reverse('givethanks', kwargs={'thanks_for':'registered'}))

def ThankYou(request, **kwargs):
    print(thanks_for)

错误消息

error screenshot

1 个答案:

答案 0 :(得分:1)

看起来'givethanks'的网址不会占用任何kwargs。 view 函数可以,但url模式本身没有'thanks_for'的占位符。您可能希望将其修改为

path('thankyou/<thanks_for>/', views.ThankYou, name="givethanks"),

或类似的东西。

然后您的观点可以是:

def ThankYou(request, **kwargs):
    print(kwargs['thanks_for'])