
[英]How do I pass primary key from url to function based view in django?
[英]how should i pass the primary key from a link
在我的django用户个人资料模板中,我有一个用于编辑个人资料模板的链接。 但是它没有给出反向发现错误。 。这是我的html模板,我从那里通过模型UserProfile传递我的pk。 我无法通过反向功能使用主键(这是我猜的错误)。 另外,如何在变量中调用主键以将其传递到模板中? 纽扣
这是我的views.py
class NewUserProfileView(FormView):
template_name = "visit/user_profile.html"
form_class = UserProfileForm
def form_valid(self, form):
form.save(self.request.user)
return super(NewUserProfileView, self).form_valid(form)
def get_success_url(self, *args, **kwargs):
return reverse("main:home")
class EditUserProfileView(UpdateView):#Note that we are using UpdateView and not FormView
model = UserProfile
form_class = UserProfileForm
template_name = "visit/user_profile.html"
def get_object(self, *args, **kwargs):
user = get_object_or_404(User, pk=self.kwargs['pk'])
# We can also get user object using self.request.user but that doesnt work
# for other models.
return user.userprofile
def get_success_url(self, *args, **kwargs):
return reverse("main:home")
这是我的网址
url(r'^profiles/new/(?P<pk>\d+)/$', NewUserProfileView.as_view(), name="new-user-profile"),
url(r'^users/(?P<pk>\d+)/edit/', EditUserProfileView.as_view(), name="edit-user-profile"),
这是Reverse for 'new-user-profile' with keyword arguments '{'pk': <SimpleLazyObject: <User: sid>>}' not found. 1 pattern(s) tried: enter code here['profiles/new/(?P<pk>\\\\d+)/$']
的错误Reverse for 'new-user-profile' with keyword arguments '{'pk': <SimpleLazyObject: <User: sid>>}' not found. 1 pattern(s) tried: enter code here['profiles/new/(?P<pk>\\\\d+)/$']
Reverse for 'new-user-profile' with keyword arguments '{'pk': <SimpleLazyObject: <User: sid>>}' not found. 1 pattern(s) tried: enter code here['profiles/new/(?P<pk>\\\\d+)/$']
我认为如果只有当前用户可以编辑自己的配置文件,这可能会更好。 在模型中,请确保定义如下内容:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
......
然后,您可以在任何视图和模板上调用request.user.profile
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.