2016-03-21 15 views
1

Ben de böyle bir yayını düzenlemek nerede şablonu bağlamaya çalışıyorum:Bir düzenleme sayfasını django adresindeki ayrıntı sayfama nasıl bağlarım?

<a href="{% url 'blog:post_update' pk=post.pk %}">Edit</a> 

Ama bana bu hatayı veriyor:

Reverse for 'eintrag_update' with arguments '()' and keyword arguments '{u'pk': 63L}' not found. 1 pattern(s) tried: [u'gaestebuch/(?P<id>[0-9]+)/edit/$'] 

Ama hiç böyle şablona erişebilirsiniz bir hatasız:

:/blog/(id)/böyle sadece yanındaki bir bağlantı var örneğin bu şablona Her diğer bağlantı çalışmaktadır

düzenlemek 210

Mükemmel şekilde çalışıyor. Bu benim url'dir

def post_update(request, id=None): 
    instance = get_object_or_404(Post, id=id) 
    form = PostForm(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 = { 
     "title": instance.title, 
     "instance": instance, 
     "form":form, 
    } 
    return render(request, "blog/write.html", context) 

:

Bu

benim görünümüdür

url(r'^(?P<id>[0-9]+)/edit/$', views.post_update, name='post_update'), 

Ve bu benim modelidir: Birisi yardımcı olabilir

class Post(models.Model): 
    author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1) 
    title = models.CharField(max_length=200) 
    content = models.TextField() 

Gerçekten sevinirim ben mi!

+2

'eintrag'ı' post'a çevirme tehlikesi, hatayı gizleyebileceğinizdir! Bu durumda, ben zaten sorunu tespit ettim düşünüyorum. – Alasdair

+0

Evet haklısınız, daha kolay anlamaya çalıştım. Ve yardımlarınız için tekrar çok teşekkürler! – Dannad

cevap

2

Url kalıplarındaki anahtar sözcük bağımsız değişkenleri, url etiketindeki anahtar kelime bağımsız değişkenleriyle eşleşmelidir.

Sen Böylece hem Url'nizde desende pk kullanmalıdır kelime argüman pk

<a href="{% url 'blog:post_update' pk=post.pk %}">Edit</a> 

kullanıyor. Şu anda id kullanıyorsunuz. yerine id kullanmak için URL etiketi oldukları gibi görünüm ve URL kalıbını bırakabilir

def post_update(request, pk): 
    post = get_object_or_404(Post, pk=pk) 
    ... 

ve değiştirin: muhtemelen örneğin yanı görünümünüzü güncellemek zorunda anlamına

url(r'^(?P<pk>[0-9]+)/edit/$', views.post_update, name='post_update'), 

. Ancak, pk kullanmanızı öneririm, çünkü Django sınıf tabanlı görünümlerde kullanır.

Başka bir seçenek, url etiketindeki kwargs yerine args kullanmaktır.

{% url 'blog:post_update' post.pk %} 
+0

Yardımlarınız için tekrar çok teşekkürler! – Dannad

İlgili konular