3

私はDjangoを初めて使用し、次の問題に直面しています:適切なリンクをオンにすると、次のエラーが発生します:

NoReverseMatch at /tutorial/

Reverse for 'tutorial.views.section_tutorial' with arguments '(1L,)' and keyword arguments '{}' not found.

私は何を間違っていますか?そして、引数に「1」ではなく「1L」が渡されるのはなぜですか? (「1」を返すと同じエラーが発生します。)テンプレート'tutorial.views.section_tutorial'で forを変更しようとし'section-detail'ましたが、まだ何も変更されていません。django 1.5.4、python 2.7 を使用。ありがとう!

tutorial/view.py:

def get_xhtml(s_url):
    ...
    return result

def section_tutorial(request, section_id):
    sections = Section.objects.all()
    subsections = Subsection.objects.all()
    s_url = Section.objects.get(id=section_id).content
    result = get_xhtml(s_url) 
    return render(request, 'tutorial/section.html', {'sections': sections,
                                                     'subsections': subsections,
                                                     'result': result})

tutorial/urls.py:

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

urlpatterns = patterns('',
    url(r'^$', views.main_tutorial, name='tutorial'),
    url(r'^(?P<section_id>\d+)/$', views.section_tutorial, name='section-detail'),
    url(r'^(?P<section_id>\d+)/(?P<subsection_id>\d+)/$', views.subsection_tutorial, name='subsection-detail'),
)

urls.py:

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^tutorial/$', include('apps.tutorial.urls')),
)

main.html:

{% extends "index.html" %} 
{% block content %}
<div class="span2" data-spy="affix">
  <ul id="menu">
    {% for section in sections %}
    <li>
      <a href="{% url 'tutorial.views.section_tutorial' section.id %}">{{ section.name }}</a>
      <ul>
        {% for subsection in subsections%}
        {% if subsection.section == section.id %}
        <li><a href=#>{{ subsection.name }}</a></li>
        {% endif %}
        {% endfor %}
      </ul>
      {% endfor %}
    </li>
  </ul>
</div>
<div class="span9">
    <div class="well">
    {% autoescape off%}
    {{ result }}
    {% endautoescape %}

</div>
</div>

{% endblock %}
4

1 に答える 1

4

$アプリの URL を含める場合、メインの URL ファイルの URL 正規表現に識別子は必要ありません。

url(r'^tutorial/$', include('apps.tutorial.urls')),

次のようにする必要があります。

url(r'^tutorial/', include('apps.tutorial.urls')),
于 2013-10-14T16:10:17.430 に答える