gpt4 book ai didi

python - 在 View 之间传递和检索参数时,反向为 '',没有未找到参数

转载 作者:行者123 更新时间:2023-11-30 22:26:03 24 4
gpt4 key购买 nike

Django 版本:1.10基本上,我希望已登录的用户可以使用自己的数据访问该页面。因此,当用户提供登录凭据时,绕过“pk”重定向到其他页面,以便该页面仅包含与该“pk”相关的数据。

我在 StackOverflow 中看到过有关 Reverse for '' with no argument not found 的其他帖子,但我不知道为什么这对我不起作用,所以非常感谢许多见解和解决方案

在主项目的urls.py中:

urlpatterns = [
url(r'^admin/', admin.site.urls,name='admin'),
url(r'^basic_app/',include('basic_app.urls',namespace='basic_app')),]

我有一个名为 basic-app 的应用程序,其中包含 urls.py

from django.conf.urls import url
from basic_app import views

app_name = 'basic_app'

urlpatterns = [
url(r'^login/$', views.user_login, name='user_login'),
url(r'^class/(?P<pk>\d+)/$',views.ClassroomView,name='classroom_list'), ]

在views.py中,我有一个用户登录 View ,应将参数发送为

def user_login(request):

if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user:
if user.is_active:
login(request,user)
# then send the user to Classroom view with 'pk' as parameter
return redirect(reverse('basic_app:classroom_list'), {'pk': user.id})

我应该从以下 ClassroomView 中的 LoginView 获取“pk”:

def ClassroomView(request,pk):

classroom_list = Classroom.objects\
.filter(school__user=User.objects.get(pk=request.session.get('user_id','0')))
class_dict = {'class_records': classroom_list}
return render(request, 'basic_app/classroom_list.html', context=class_dict)

但是,它说

Reverse for 'classroom_list' with no arguments not found. 1 pattern(s) tried: ['basic_app/class/(?P<pk>\\d+)/$']

并且,该网址显示以下内容,不带“pk”

http://127.0.0.1:8000/basic_app/login/

我认为问题在于返回重定向()。如果我只写以下内容:返回重定向('basic_app:classroom_list', {'pk': user.id})

它给出以下错误:

NoReverseMatch at /basic_app/login/
Reverse for 'classroom_list' with arguments '({'pk': 2},)' not found. 1 pattern(s) tried: ['basic_app/class/(?P<pk>\\d+)/$']

那么,如何通过传递参数链接到下面的 URL?

url(r'^class/(?P<pk>\d+)/$',views.ClassroomView,name='classroom_list')

最佳答案

语法是:

reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)

所以

return redirect(reverse('basic_app:classroom_list', kwargs={'pk': user.id}))

关于python - 在 View 之间传递和检索参数时,反向为 '',没有未找到参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47343477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com