私はDjangoブログのToggleのようなポストを実装しようとしています。ユーザーが自分のブログの投稿を好きになるようget_redirect_urlをオーバーライドしようとしています。次のように私はクラスを概説しました: - 私は現在、ポストスラグ上でこれをやっているRedirectViewジェネリックビューのget_redirect_url関数をオーバーライドする問題
class PostLikeToggle(RedirectView):
def get_redirect_url(self, *args, **kwargs):
slug = self.kwargs.get("slug")
obj = get_object_or_404(Post, slug=slug)
url_ = obj.get_absolute_url()
self.request.user
if user.is_authenticated():
obj.likes.add(user)
return url_
しかしを、私が思う問題は、私は私のポストオブジェクトを取得していますどのようにしてあります。私は次のように私はそのためのURLパターンを定義した、SEOフレンドリーポストのリストを定義したいと思っています
url_patterns = [
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/$', views.post_detail, name = 'post_detail'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/like/$', views.PostLikeToggle.as_view(), name = 'post_like'),
]
私はURLで<slug>
で<post>
を交換することにより、「スラグ」を参照するには、上記を改正しようとしました。うまくいきませんでした。次に、get_redirect_url関数で投稿を定義しようとしました。
post = self.kwargs.get("post")
obj = get_object_or_404(Post, post=post)
もう一度動作しませんでした。私はいろいろ試してみようと努力していますが、悲しいことに、運がまだありません - 私はDjangoの論争のコミュニティであなたの経験を積んだ人にそれを投げ捨てます。
ありがとうございます。
こんにちはAlasdair - これは現在機能しています。ありがとうございました。私は正しい答えを受け入れました(私はあなたがなぜ115kを持っているのか分かります)。あなたのアドバイスを反映して、私はpost = self.kwargs.get( "post") 'を保ち、' obj = get_object_or_404(Post、slug = post) 'を使ってください(' obj = get_object_or_404 Post、post = post) ') –
はい、そうです。あなたの問題は、' slug = '' get_object_or_404'の代わりに 'post ='を試したことでした。 – Alasdair