如何将编辑页面链接到django中的详细配置文件页面?

时间:2016-10-26 10:54:24

标签: django django-templates

所以我试图链接模板,我可以像这样编辑user_profile:

修改

但是给了我这个错误:

/ user_profile / 9 /的NoReverseMatch 反向' user_profile_update'参数'()'和关键字参数' {u' id':''}'未找到。尝试了1种模式:[u' user_profile /(?P \ d +)/ edit / $']

但是我可以在没有错误的情况下访问这样的模板:/ user_profile /(id)/ edit

这是我的观点:

def user_profile_update(request, id=None):
    instance = get_object_or_404(user_profile, id=id)
    form = user_profileForm(request.POST or None, request.FILES or None, instance=instance)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        return HttpResponseRedirect(instance.get_absolute_url())
    context = {
        "first_name": instance.first_name,
        "instance": instance,
        "form":form,
         }
return render(request, "user_profile/user_profile_form.html", context)

这是我的网址:

url(r'^create/$', user_profile_create,name='create'),
url(r'^(?P<id>\d+)/$', user_profile_detail, name='detail'),
url(r'^(?P<id>\d+)/edit/$',user_profile_update, name='edit'),
url(r'^(?P<id>\d+)/delete/$', user_profile_delete),

这是我的模特:

class user_profile(models.Model):

    first_name = models.CharField(null=True,max_length=100)
    last_name = models.CharField(null=True,max_length=100)
    address_1 = models.CharField(_("Address"), max_length=128)
    address_2 = models.CharField(_("Address 1"), max_length=128, blank=True)
    city = models.CharField(_("City"), max_length=64, default="pune")
    country_name = models.CharField(max_length=60)
    pin_code = models.CharField(_("pin_code"), max_length=6, default="411028")
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

    def __unicode__(self):
        return self.first_name

    def __str__(self):
        return self.first_name

    def get_absolute_url(self):
        return reverse("user_profile:detail", kwargs={"id": self.id})

    class Meta:
        ordering = ["-timestamp", "-updated"]

如果有人可以帮助我,我会很高兴的!

1 个答案:

答案 0 :(得分:1)

您需要单独的视图和URL-conf才能进行编辑和详细视图。您在URL-conf中只有^user_profile/(?P\d+)/edit/$',因此您只能从user_profile/123/edit/访问该视图。因此,您需要添加另一个网址'^user_profile/(?P\d+)/$才能从user_profile/123/进行访问 对于最简单的解决方案,您需要两个独立的视图。