所以我试图链接模板,我可以像这样编辑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"]
如果有人可以帮助我,我会很高兴的!
答案 0 :(得分:1)
您需要单独的视图和URL-conf才能进行编辑和详细视图。您在URL-conf中只有^user_profile/(?P\d+)/edit/$'
,因此您只能从user_profile/123/edit/
访问该视图。因此,您需要添加另一个网址'^user_profile/(?P\d+)/$
才能从user_profile/123/
进行访问
对于最简单的解决方案,您需要两个独立的视图。