0

この投票アプリを設計しました。ハード コードの URL を名前空間の URL に変換しようとしていますが、パスにエラーがありました。

これは私の index.html であり、ご覧のとおり、私の URLconf を指すハード コードされた URL です。

{% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

私の myapp URLconf.

 from django.conf.urls import patterns, include, url
 from django.contrib import admin
 from django.conf import settings

 from django.conf.urls import patterns, include, url

 urlpatterns = patterns('myapp.views',
     url(r'^$', 'index', name="index"),
     url(r'^(?P<poll_id>\d+)/$', 'detail',name="detail"),
     url(r'^(?P<poll_id>\d+)/results/$', 'results', name="results"),
     url(r'^(?P<poll_id>\d+)/vote/$', 'vote', name="vote"),
 )

これは私のメインの URLconf です。

 from django.conf.urls import patterns, include, url
 from django.contrib import admin
 from django.conf import settings

 admin.autodiscover()
 urlpatterns = patterns('',
     url(r'^polls/', include('myapp.urls', namespace='myapp')),                   
 ,
 )

私の意見は次のとおりです。

def detail(request, poll_id):
    p = get_object_or_404(Poll, pk=poll_id)
    return render_to_response('myapp/detail.html', {'poll': p},
context_instance=RequestContext(request))

ハードコードされたエラーを {% url detail poll.id %} または {% url myapp:detail poll.id %} に置き換えようとしました

しかし、私はこのエラーを受け取りました

 NoReverseMatch at /polls/

 Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.

 Request Method:    GET
 Request URL:   http://127.0.0.1:8000/polls/
 Django Version:    1.4.3

 Exception Type:    NoReverseMatch
  Exception Value:  

 Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.

  Error during template rendering

  In template C:\djcode\mysite\myapp\templates\myapp\index.html, error at line 4
  Reverse for 'detail' with arguments '(5,)' and keyword arguments '{}' not found.
  1     {% if latest_poll_list %}
  2     <ul>
  3     {% for poll in latest_poll_list %}
  4     <li><a href="{% url detail poll.id %}">{{ poll.question }}</a></li>
  5     {% endfor %}
  6     </ul>
  7     {% else %}
  8     <p>No polls are available.</p>
  9     {% endif %}

このハードコードされた URL を名前空間に変換して、エラーなしで myapp URLconf を指すようにするにはどうすればよいですか?

4

1 に答える 1

0

使い方はユースケースによって異なります。

おそらくあなたのユースケースです。

{% url detail poll.id %}

url-tag が名前detailと次の部分で一致する場所poll.id

ここで説明したいもう 1 つの方法は、同じアプリの複数のインスタンスを作成する場合は、url 名前空間を使用する必要があるということです。ここで議論

主要urls.py

url(r'^polls/', include('core.urls')),

含まれているurls.py

urlpatterns = patterns('',
    url(r'^/(?P<polls_id>\d+)/$', 'core.views.polls_detail_view',name="poll_detail")
)

テンプレート

 <a href="{% url poll_detail 1 %}">To Poll Detail</a>

`views.py`

def polls_detail_view(request, poll_detail):
     print "Hello Poll detail: %s" % (poll_detail)

**編集**これら2つのSO投稿をグーグルで調べた後、OPの構成がうまくいかない理由が説明されています。

最初の SO 投稿

2 番目の SO 投稿

これらは 19 か月前のチケットです。

** 編集 **

于 2013-02-22T10:56:31.717 に答える