我是Django 2.0的新手,在访问我的个人资料页面 View 时遇到此错误。它正在使用像path('users/<int:id>')
这样的URL,但是我想像path('<username>')
这样的URL。不知道到底是什么问题。希望您能提供帮助。
#views.py
class ProfileView(views.LoginRequiredMixin, generic.DetailView):
model = models.User
template_name = 'accounts/profile.html'
#urls.py
urlpatterns = [
path('', HomePageView.as_view(), name='home'),
path('signup', SignUpView.as_view(), name='signup'),
path('login', LoginView.as_view(), name='login'),
path('logout', logout_view, name='logout'),
path('<username>', ProfileView.as_view(), name='profile')
]
#base.html
<ul class="dropdown-menu">
<li><a href="{% url 'accounts:profile' user.username %}">View Profile</a></li>
<li><a href="#">Edit Profile</a></li>
</ul>
最佳答案
您需要告诉您的 View 使用username
作为查找字段。您可以通过在模型上定义slug_field
和slug_url_kwarg
或重写get_object
来做到这一点。例如:
class ProfileView(views.LoginRequiredMixin, generic.DetailView):
model = models.User
template_name = 'accounts/profile.html'
slug_field = 'username'
slug_url_kwarg = 'username'
其中的第一个确定在模型查找中使用哪个字段。第二个参数根据URL模式确定要使用的变量。
关于python - 通用详细信息 View ProfileView必须使用对象pk或子弹调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497771/