Django 使用 UpdateView 时出现此错误:/user/2/edit 处的 NoReverseMatch
Django Getting this error with UpdateView: NoReverseMatch at /user/2/edit
我有一个更新视图供用户更新他们的个人资料。但是我不断收到此错误:
NoReverseMatch at /user/2/edit
Reverse for 'user_profile' with no arguments not found. 1 pattern(s) tried: ['user/(?P<pk>\d+)/$']
我尝试过的所有方法都不起作用(添加 pk 等)。
更新视图:
class UserEditProfileView(LoginRequiredMixin,UpdateView):
login_url = '/login/'
model = UserProfile
fields = [
'first_name',
'profile_pic',
'location',
'title',
'user_type',
'website',
'about',
'twitter',
'dribbble',
'github'
]
template_name_suffix = '_edit_form'
success_url = reverse_lazy('users:user_profile')
应用程序网址:
from django.conf.urls import url
from users import views
app_name = 'users'
urlpatterns = [
url(r'^$',views.UserListView.as_view(),name='user_list'),
url(r'^(?P<pk>\d+)/$',views.detailprofile,name='user_profile'),
url(r'^(?P<pk>\d+)/edit$',views.UserEditProfileView.as_view(),name='user_profile_edit'),
url(r'^login/$',views.user_login,name='user_login'),
url(r'^logout/$',views.user_logout,name='user_logout'),
url(r'^register/$',views.register,name='register'),
]
编辑个人资料模板:
{% extends "users/base.html" %}
{% block content %}
<div class="form-base">
<h2>Edit Profile</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
</div>
{% endblock %}
如果您需要查看其他内容,请告诉我。
您还需要在user_profile
中提供pk
class UserEditProfileView(LoginRequiredMixin,UpdateView):
login_url = '/login/'
model = UserProfile
fields = [
'first_name',
'profile_pic',
'location',
'title',
'user_type',
'website',
'about',
'twitter',
'dribbble',
'github'
]
template_name_suffix = '_edit_form'
def get_success_url(self):
userid = self.kwargs['pk']
return reverse_lazy('users:user_profile', kwargs={'pk': userid})
我有一个更新视图供用户更新他们的个人资料。但是我不断收到此错误:
NoReverseMatch at /user/2/edit
Reverse for 'user_profile' with no arguments not found. 1 pattern(s) tried: ['user/(?P<pk>\d+)/$']
我尝试过的所有方法都不起作用(添加 pk 等)。
更新视图:
class UserEditProfileView(LoginRequiredMixin,UpdateView):
login_url = '/login/'
model = UserProfile
fields = [
'first_name',
'profile_pic',
'location',
'title',
'user_type',
'website',
'about',
'twitter',
'dribbble',
'github'
]
template_name_suffix = '_edit_form'
success_url = reverse_lazy('users:user_profile')
应用程序网址:
from django.conf.urls import url
from users import views
app_name = 'users'
urlpatterns = [
url(r'^$',views.UserListView.as_view(),name='user_list'),
url(r'^(?P<pk>\d+)/$',views.detailprofile,name='user_profile'),
url(r'^(?P<pk>\d+)/edit$',views.UserEditProfileView.as_view(),name='user_profile_edit'),
url(r'^login/$',views.user_login,name='user_login'),
url(r'^logout/$',views.user_logout,name='user_logout'),
url(r'^register/$',views.register,name='register'),
]
编辑个人资料模板:
{% extends "users/base.html" %}
{% block content %}
<div class="form-base">
<h2>Edit Profile</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
</div>
{% endblock %}
如果您需要查看其他内容,请告诉我。
您还需要在user_profile
pk
class UserEditProfileView(LoginRequiredMixin,UpdateView):
login_url = '/login/'
model = UserProfile
fields = [
'first_name',
'profile_pic',
'location',
'title',
'user_type',
'website',
'about',
'twitter',
'dribbble',
'github'
]
template_name_suffix = '_edit_form'
def get_success_url(self):
userid = self.kwargs['pk']
return reverse_lazy('users:user_profile', kwargs={'pk': userid})