繁体   English   中英

我应该如何通过链接传递主键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM