SORU
14 ŞUBAT 2013, PERŞEMBE


Django sürüm 1.5:' boş olmayan ilk argümanı gerektirir 'url. Sözdizimi Django 1.5 değişti

Django 1.5 sürümü kullanmaya başladım ve benim eski kod ile ilgili bir sorun var:

<a href="{% url auto.views.viewpost post.slug %}"><h3>{{post.title}}</h3></a>

Hata: '' boş olmayan ilk bağımsız değişken gerektirir. url Sözdizimi 1.5, doktorlar Django değişti. Dokümanlar:

Bir kaldırılan özelliği dikkati çekiyor “yeni tarzı” url mesaisi etiket. 1.3, sözdizimi gibi {% url myview %} Django önce yorumlandı ("bir" gerçek bir isim olması myview Django olarak yanlış görünüm, şablon değişkeni myview adlandırılmış). Django 1.3 ve üzeri {% yük gelecek % url} getirmek için sözdizimi tanıttı bir değişken olarak görüldüğü davranışı düzeltildi.

Bu sonuç ise {% load url kullanıyorsanız değil gelecek %} şablonlar, {% url gibi etiketleri değiştirmek gerekir için {% url "" %} myview. % myview} Eğer {% load url kullanıyorsanız gelecek %} sadece bu çizginin altına kaldırabilirsiniz Django 1.5

Sonra denedim: <a href=“{% url ‘auto.views.view_post’ post.slug %}”><h3>{{post.title}}</h3></a> ama hata Ters var otomatik.manzarası.’ argümanlarla(’,)' ve anahtar kelime argümanlar {} ‘ ’ bulunamadı. ‘ view_post :( Neyi yanlış yapıyorum? Thx!

CEVAP
12 Mart 2013, Salı


Gerçekten elle tüm bu saçmalıkları yapıyor nefret ediyorum, benim için bunu yapmak için sed bir senaryo yazdım. Yedeğini sahip olduğunuzdan emin olun, şablonlar dizini: bu çalıştırın

find . -type f -print0 | xargs -0 sed -i 's/{% url \([^" >][^ >]*\)/{% url "\1"/g'

Şablon dosyaları tüm geçmesi ve bunun yerini alacak:

{% url something.else foo bar %}

bu ile

{% url "something.else" foo bar %}

Bazı yapıları mola olabilir, biraz tembel bu beraberdim, dikkatli olun. Hala daha elle yapmak daha diff hataları arıyor olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009