0

私は今、自分の 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 を取得するには何を変更すればよいですか?

4

1 に答える 1

0

ああ、

これを見たとき、次のことがわかりました。

/slug-is-here

もっと近くで見るべきだった。実際に起こっていたことは次のとおりです。

/app-pathslug-is-here

プロジェクトの urls.py で、アプリの正規表現に末尾のスラッシュがありませんでした。

そうそう。それを皆さんへの教訓にしましょう。

于 2009-06-04T01:52:26.077 に答える