質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7640閲覧

【Django】ページ遷移の際に、URLに文字列を渡したい

inami_173

総合スコア22

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/02/11 11:07

###やりたいこと
Djangoでリンクをクリックし、遷移するときに現在はURLが「blog/1」というようにPrimaryKeyで渡されているのですが、
文字列(Post.title)を渡し「blog/Title1」というようにしたいです。

###エラー文
ValueError: invalid literal for int() with base 10: 'Title1'

###やったこと
調べてみると、viewsで
slug_fieldでモデルのフィールドの名前、
slug_url_kwargにurlsのキーワードの名前を指定、
HTMLでaタグを変えれば(下記コード)問題ないと思ったのですがエラーが出てしまします。
エラー文で調べてみましたが(リンク内容)解決できませんでした。

どなたか助けていただけたらと思います。よろしくお願いします。

###コード
mysite/models.py

Python

1class Post(models.Model): 2 title = models.CharField("Title", max_length=255) 3 ...

mysite/views.py

Python

1class PostDetailView(DetailView): 2 template_name = 'mysite/post_detail.html' 3 model = Post 4 pk_url_kwarg = 'title' 5 slug_field = "title" 6 slug_url_kwarg = "post_title"

mysite/urls.py

Python

1 2urlpatterns = [ 3 ... 4 url(r'^blog/(?P<title>\w+)/$', views.PostDetailView.as_view(), name = "post_title"), 5 ... 6]

templates/mysite/blog.py

HTML

1{% for post in posts.all %} 2 <div class="blog-title"> 3 <!-- 現在はこれで動きます(blog/1) --> 4 <h1><a href="{% url 'mysite:post_title' post.id %}" >{{ post.title }}'</a></h1> 5 6 <!-- これでtitleはurlに表示されますが(blog/Title1)、エラーになります --> 7 <h1><a href="{% url 'mysite:post_title' post.title %}" >{{ post.title }}'</a></h1> 8 </div> 9 ... 10{% endfor %}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

確認してみてほしいことがあります。

  1. views.PostDetailViewのslug_url_kwarg を"post_title"から"title"に変更

  2. views.PostDetailViewのpk_url_kwargを削除

たぶん、これで動くと思いますが……どうでしょう?
よろしくお願いします。

投稿2018/02/12 05:00

RyuSA

総合スコア131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inami_173

2018/02/13 00:19

ありがとうございます!無事動きました! 変数に対して以下のような認識だったのですが、実際はどのような意味合いを持って紐づいているのでしょうか。公式ドキュメントを見てもいまいち理解できませんでした…。お手数ですがお答えいただければ幸いです。 pk_url_kwarg:urls.pyで「P<py>」以外を使う場合に指定。 slug_field:URLに渡すモデルのフィールド名 slug_url_kwarg:urls.pyのキーワード(これを引数のnameだと思っていました)
RyuSA

2018/02/14 02:52

pk_url_kwarg:プライマリキーを[pk]から別の表記にする場合 で、残りは上記の通りだと思います。 この辺りは自分はあまり使わない項目なので、詳細はわかりません……
inami_173

2018/02/28 12:42

そうでしたか。自分でももう少し調べてみます。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問