2016-05-15 5 views
0

現在、私はPythonを学んでいて、Webアプリケーションを作成するためにDjangoを使って楽しいことをしています。私は、コード内で何が起こっているのかを理解する私の意志のために、障害物になってきました。URL機能のDjango .idの使用

{% for topic in topics %} 
     <li> 
     <a href="{% url 'learning_logs:topic' topic.id %}"> 
      {{ topic }} 
     </a> 
     </li> 

.ID属性が内蔵されてジャンゴで話題のIDが返されることを理解することが何かあるならば、私はわからない:私は、次のコードを使用してリンクのリストを作成しています。これは、次のURLパターンに渡される:

url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'), 

は、「ID」や各トピックの「キー」を探し、URL関数内の正規表現にそれを渡す機能のいくつかの並べ替えを.IDていますか?代わりに

正規表現体内の
<topic_id> 

のコードストップがあれば正常に動作します私は同じ他のすべてを維持するように

<topic_key> 
  • として何かを持っているでしょうか?

ご指摘いただきありがとうございます。私はドキュメントを読んできましたが、これはobj_idとして識別される引数であり、.idはそのリファレンスとそれに関連する関数を参照する方法だと思っていますが、完全にはわかりません。投機的控除。

ありがとう、コミュニティ:

+0

[こちらのドキュメント](https://docs.djangoproject.com/ja/1.9/topics/db/models/#quick-example)には何も答えません。 – schwobaseggl

+0

なぜそれをキーに変えてみて、それが何をしているのか見てみませんか? – Sayse

答えて

0

まずは、はい。 DBに保存すると、すべてのモデルが自動的にid(またはpk)属性を取得します。これは、モデルのテーブル内のオブジェクトのid(または主キー..)を保持します。今

のは、コードの重要なビットに焦点を当ててみましょう:にほぼ同等である

url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'), 

def get_topic(topic_id): 
    # magic 
    return topic_with_that_id 

とほぼ同等である

{% for topic in topics %} 
    <a href="{% url 'learning_logs:topic' topic.id %}"> 
    </a> 
{% endfor %} 

あなたが見ることができるように

、本当に
r'^topics/(?P<topic_id>\d+)/$'の引数の名前が何であるかは関係ありません。また、限り、あなたは正しい引数の数と型を渡すよう、{% url 'learning_logs:topic' topic.id %}に重要。

重要な注意: view`sコードではなく、テンプレート内
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),だけの問題で引数の名前。テンプレートで使用する名前は、モデルに従っている必要があります。

+1

urlタグにキーワード引数を使用できます(例: '{%url 'learning_logs:トピック' topic_id = topic.id%} 'です。これを行うと、変数 'topic_id'はURLパターンとビューの変数名と一致しなければなりません。 – Alasdair

+0

@Alasdair、ありがとう、私はそのオプションを知らなかった。 – DeepSpace

+0

素晴らしい!説明をありがとう!それは今明らかに:) – decahub

関連する問題