Я сейчас создаю приложение, которое пытаюсь должным образом отделить от других приложений в моем проекте Django (не стесняйтесь читать мне лекции о том, как отделять приложения Django, я буду рад узнать больше / все время).
Моя проблема заключается в следующем: Метод get_ absolute_url (), который я написал, возвращает относительный путь на основе моего представления. Я думаю, что неправильно добавлять специальное именованное представление в проект urls.py только для того, чтобы в моем приложении были абсолютные URL, и я не могу понять, что я делаю неправильно. Так что, если кто-то может мне помочь, я буду очень признателен (и упомяну вас, когда я выпущу эту присоску!)
У меня есть проектный уровень urls.py, который включает в себя еще один urls.py, основанный на шаблоне URL, например, так (имена являются подробными только для этого примера):
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, сохраняя это приложение в чистоте и не связывая его слишком глубоко с проектом?