Как получить точный абсолютный URL-адрес из get_absolute_url с включенным в Django urls.py - PullRequest
0 голосов
/ 04 июня 2009

Я сейчас создаю приложение, которое пытаюсь должным образом отделить от других приложений в моем проекте 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, сохраняя это приложение в чистоте и не связывая его слишком глубоко с проектом?

1 Ответ

0 голосов
/ 04 июня 2009

Welp,

Оказывается, когда я видел это:

/slug-is-here

Я должен был присмотреться. То, что действительно происходило, было:

/app-pathslug-is-here

Я пропустил косую черту в регулярном выражении моего приложения в моем проекте urls.py.

Так что да. пусть это будет уроком для всех вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...