我建立一个应用程序,现在,我试图保持在我的Django项目的其他应用程序(随意训斥我在保持Django的应用解耦正确地去耦,我很乐意了解任何/所有的时间)。

我的问题是这样的:我已经写在返回基于我的视图的相对路径的的get_ absolute_url()方法。我认为这是错误的,必须在项目的urls.py只是这样我就可以有绝对的URL在我的应用程序添加一个特殊的命名视图,我想不出什么我做错了。因此,如果有人可以帮助我,我会很感激它(和提你当我发布这个傻逼!)

我有一个项目级urls.py包括基于像这样的URL图案另一个urls.py(名称是冗长此仅举例):

project-urls.py

urlpatterns = patterns('',
    ('^$', direct_to_template, {'template': 'base.html'}),
    (r'^app', include('project.app.urls')),
)

app-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
是obvs不是绝对的,并且作出基于我urls.py.哪个意义

我应该怎么改才能得到真正的绝对URL,同时保持这个程序干净和不夫妇它太深瓦特/项目?

有帮助吗?

解决方案

韦尔普,

事实证明,当我看到的是:

/slug-is-here

我应该看清楚。什么是真正发生的事情是:

/app-pathslug-is-here

我错过我的应用程序的正则表达式结尾的斜线在我的项目urls.py。

所以酵母。让这是一个教训,你们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top