1. 程式人生 > >django 後端反向生成url

django 後端反向生成url

from django.conf.urls import url
#取出app名字,和 models中的表名
app_model_name = self.model_class._meta.app_label, self.model_class._meta.model_namepatterns = [ url(r'^$', self.wrapper(self.changelist_view), name="%s_%s_changelist" % app_model_name),url(r'^add/$', self.wrapper(self.add_view), name="%s_%s_add"
% app_model_name),url(r'^(.+)/delete/$', self.wrapper(self.delete_view), name="%s_%s_delete" % app_model_name),url(r'^(.+)/change/$', self.wrapper(self.change_view), name="%s_%s_change" % app_model_name),]
from django.urls import reverse

base_url = reverse('{0}:{1}_{2}_delete'.format(self.site.namespace, 
self.app_label, self.model_name), args=(pk,))

Django奉行的是DRY原則,所以使用這種方式,就無需對url地址進行硬編碼.在原本需要硬編碼url的地方,直接可以使用url的名字,然後逆向解析出url地址. Django提供了不同層面上的url解析方法.
  • template檔案: 用url模板標籤
  • python程式碼中可以使用django.core.urlresolvers.reverse()
  • 其他get_absolute_url()