私は今、自分の Django プロジェクトで他のアプリから適切に分離された状態を維持しようとしているアプリを構築しています (Django アプリを分離し続ける方法についてお気軽に教えてください。 )。
私の問題は次のとおりです。私が作成した get_absolute_url() メソッドは、ビューに基づいて相対パスを返しています。プロジェクト urls.py に特別な名前のビューを追加する必要があるのは間違っていると思います。これは、アプリで絶対 URL を使用できるようにするためであり、何が間違っているのかわかりません。誰かが私を助けてくれたら、本当に感謝します (そして、この吸盤をリリースするときにあなたに言及します!)
次のような URL パターンに基づいた別の urls.py を含むプロジェクト レベルの urls.py があります (名前はこの例でのみ詳細です)。
プロジェクト-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
これは絶対的ではなく、私のurls.pyに基づいて理にかなっています。このアプリをきれいに保ちながら、プロジェクトと深く結び付けないようにしながら、実際の絶対 URL を取得するには何を変更すればよいですか?