Я сейчас читаю Практические проекты Django, и в интерфейсе администратора Django есть опция «Просмотр на сайте» при вводе информации.
Но после окончания 5-й главы книги я начал возиться с интерфейсом администратора и обнаружил, что нажатие на эту ссылку в моем приложении категорий не работает, так как не добавляет веб-журнал в URL, поэтому они выглядят так:
http://127.0.0.1:8000/categories/test-cat
когда они должны быть такими ...
http://127.0.0.1:8000/weblog/categories/test-cat
Однако на моей модели записей они работают отлично. Поэтому я попытался выяснить, что было правильно в приложении Entries, чтобы выяснить, что было неверно в приложении Categories.
Я искал около 2 часов, и я не могу определить, где Джанго это делает. Я даже скопировал исходный код из интернета, хотя некоторые из них, похоже, отсутствуют.
Мой get_absolute_url () выглядит следующим образом:
def get_absolute_url(self):
return "/categories/%s/" % self.slug
Я редактировал:
def get_absolute_url(self):
return "/weblog/categories/%s/" % self.slug
и это решает проблему.
Теперь у меня вопрос: почему приложение Entries не требует этого, а приложение Categories делает это?
Мой код из класса Запись:
def get_absolute_url(self):
return ('coltrane_entry_detail', (), { 'year': self.pub_date.strftime("%Y"),
'month': self.pub_date.strftime("%b").lower(),
'day': self.pub_date.strftime("%d"),
'slug': self.slug })
get_absolute_url = models.permalink(get_absolute_url)