django içinde URL'ler oluşturmak için nasıl

oy
24

Django'nın şablon dilinde kullanabileceğiniz {% url [viewname] [args] %}parametreleri ile belirli bir görünüme bir URL oluşturmak için. Nasıl programlama yoluyla Python kodunda aynı yapabilirim?

Benim ihtiyacım (geçerli sayfa olsun veya olmasın) her öğenin adı, URL'ye sahip menü öğeleri listesini ve aktif bir bayrak oluşturmaktır. o şablon dilden Python bunu yapmanın çok daha temiz olacak olmasıdır.

Oluştur 04/09/2008 saat 06:36
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
34

Eğer benzer bir şey kullanmanız gerekirse {% url %}kodunuzda şablon etiketi, Django sağlar django.core.urlresolvers.reverse(). reverseIşlev aşağıdaki imzası vardır:

reverse(viewname, urlconf=None, args=None, kwargs=None)

https://docs.djangoproject.com/en/dev/ref/urlresolvers/

Cevap 04/09/2008 saat 06:54
kaynak kullanıcı

oy
8

Yaşıyorum benim, iki farklı yaklaşım kullanıyorum models.py. Ilk permalinkdekoratör:

from django.db.models import permalink

def get_absolute_url(self): 
    """Construct the absolute URL for this Item."""
    return ('project.app.views.view_name', [str(self.id)])
get_absolute_url = permalink(get_absolute_url)

Ayrıca çağırabilirsiniz reversedoğrudan:

from django.core.urlresolvers import reverse

def get_absolute_url(self): 
    """Construct the absolute URL for this Item."""
    return reverse('project.app.views.view_name', None, [str(self.id)])
Cevap 11/09/2008 saat 02:05
kaynak kullanıcı

oy
4

Kullanarak unutmayın reverse()sizin urlconf modülü% 100 hatasız ve işlenebilir gerektirir - hayır Iow ViewDoesNotExisthataları ya da öylesine, yoksa korkunç olsun NoReverseMatchistisna (şablonları hatalar genellikle sessizce sonuçlanan başarısız None).

Cevap 16/09/2008 saat 12:36
kaynak kullanıcı

oy
0

Python3 ve Dajango 2 için:

from django.urls import reverse

url = reverse('my_app:endpoint', kwargs={'arg1': arg_1})
Cevap 22/07/2019 saat 20:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more