【问题标题】:Reverse for 'signup_view' with arguments '(None,)' not found. 1 pattern(s) tried: ['accounts/signup_view/(?P<user_id>[0-9]+)/$']未找到参数“(无,)”的“signup_view”反向。尝试了 1 种模式:['accounts/signup_view/(?P<user_id>[0-9]+)/$']
【发布时间】:2021-01-25 16:05:19
【问题描述】:

我正在构建一个 BlogApp 并构建一个注册视图,但是当我打开浏览器时它会显示给我:-

未找到带有参数“(None,)”的“signup_view”的反向操作。尝试了 1 种模式:['accounts/signup_view/(?P[0-9]+)/$']

views.py

def signup_view(request,user_id):
        if request.method == 'POST':
            form = SignUpForm(request.POST)
            if form.is_valid():
                form.save()
                username = form.cleaned_data.get('username')
                raw_password = form.cleaned_data.get('password1')
                user = authenticate(username=username, password=raw_password)
                login(request, user)
                return redirect('mains:profile',user_id=user_id)
        else:
            form = SignUpForm()
        return render(request, 'registration/signup.html', {'form': form})

urls.py

path('signup_view/<int:user_id>',views.signup_view, name='signup_view'),

登录.html

<a href="{% url 'users:signup_view' user.id %}">Register Here.</a>

问题

当我打开浏览器时,它一直显示Reverse for 'signup_view' with arguments '(None,)' not found. 1 pattern(s) tried: ['accounts/signup_view/(?P&lt;user_id&gt;[0-9]+)/$']

我不知道我错过了什么。

任何帮助将不胜感激。

提前致谢

【问题讨论】:

  • 您可以尝试将您的 html 链接更改为 {% url 'users:signup_view' request.user.id %}
  • 它不工作。仍然显示该错误
  • 在这种情况下,您从brandonris1 得到的答案似乎是正确的。在创建用户之前,您不应该尝试获取 user.id。
  • @Progam 当你调用form.save()时,它会返回创建的用户实例,它会有一个id,你可以使用它来重定向。
  • @AbdulAzizBarkat,您的意思是 id 而不是 user_id。如果我没记错的话,你能上传作为答案吗?请

标签: python html django django-views


【解决方案1】:

看起来错误是报告您正在尝试访问您的注册视图而没有将 user_id 参数传递给它,这是有道理的。假设您的注册视图的目的实际上是让用户在您的应用程序中创建一个用户,那么在访问登录视图时该用户不会有任何 user_id 是理所当然的。因此,调用视图本身时不会传递user_id url参数(因为它还不存在)。

话虽如此,我认为如果您从视图和模板中删除 user_id url 参数,该页面将为您工作。

【讨论】:

  • 感谢您的宝贵答复。这对我帮助很大。但是我可以只通过id 吗?
  • 问题是,如果你是一个试图创建用户实例的用户,你永远不会有一个 id 可以传递。
猜你喜欢
  • 2023-03-18
  • 2020-10-21
  • 2019-09-07
  • 1970-01-01
  • 2021-12-12
  • 2020-05-13
  • 2017-11-05
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多