在我的用户个人资料的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+)/$']
答案 0 :(得分:0)
如果只有当前用户可以编辑自己的个人资料,我认为这可能更好。 在您的模型中,请确保定义如下内容:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
......
然后,您可以在任何视图和模板上调用request.user.profile