我现在正在构建一个应用程序,我正试图与我的 Django 项目中的其他应用程序保持适当的解耦(请随时教我保持 Django 应用程序解耦,我很乐意随时/一直了解更多信息)。
我的问题是:我编写的 get_ absolute_url() 方法正在返回基于我的视图的相对路径。我认为必须在项目 urls.py 中添加一个特殊的命名视图是错误的,这样我才能在我的应用程序中拥有绝对 url,而且我不知道我做错了什么。因此,如果有人可以帮助我,我将非常感激(并在我释放这个傻瓜时提及你!)
我有一个项目级 urls.py,其中包含另一个基于 URL 模式的 urls.py(名称仅在本示例中是冗长的):
项目-urls.py
urlpatterns = patterns('',
('^$', direct_to_template, {'template': 'base.html'}),
(r'^app', include('project.app.urls')),
)
应用程序 urls.py
urlpatterns = patterns('',
url(r'(?P<slug>[-\w]+)?/?$', 'app.views.home', name='app_home'),
)
现在,在我的模型中,我有这样的东西:
class AppModel(models.Model):
title = models.CharField(_('title'), max_length=100)
slug = models.SlugField(_('slug'), unique=True)
@permalink
def get_absolute_url(self):
return ('app_home', None, {'slug': self.slug})
当我在模板中调用{{ AppInstance.get_ absolute_url }}时,我得到如下信息:
/slug-is-here
根据我的 urls.py,这不是绝对的并且是有意义的。我应该改变什么来获得一个真正的绝对网址,同时保持这个应用程序干净并且不要将它与项目耦合得太深?