2016-06-17 2 views
0

Je suis un débutant essayant de faire une page wiki avec Django, toutefois, je continue à courir dans ce problème très ennuyeux:Python NoReverseMatch lorsque Affichage de la page

NoReverseMatch at /wiki/page/Start/ Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

Sites urls.py

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^polls/', include('polls.urls')), 
    url(r'^wiki/', include('wiki.urls')), 
] 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

wiki urls.py

app_name = 'wiki' 
urlpatterns = [ 
    url('^', include('django.contrib.auth.urls')), 
    url(r'^login/$', auth_views.login, {'template_name': 'wiki/registration/login.html'}, name='login'), 
    url(r'^logout/$', auth_views.logout, {'template_name': 'wiki/registration/logged_out.html'}, name='logout'), 
    url(r'^register/$',views.register_page, name='register'), 
] 

urlpatterns += [ 
    url(r'^page/(?P<page_name>[^/]+)/edit/$',views.edit_page, name='EditPage'), 
    url(r'^page/(?P<page_name>[^/]+)/save/$',views.save_page, name='SavePage'), 
    url(r'^page/(?P<page_name>[^/]+)/$',views.view_page, name='ViewPage'), 
    url(r'^upload/$', views.upload_file, name='upload_page'), 
] 

Views.py

def view_page(request, page_name): 
    try: 
     page = Page.objects.get(pk=page_name) 
    except Page.DoesNotExist: 
     return render(request,"wiki/create.html", {"page_name":page_name}) 
    content = page.content 
    return render(request, "wiki/view.html", {"page_name":page_name, "content":content}) 

Voir modèle qui est branché avec la base. Ce problème s'applique à chaque chose que j'essaie d'ouvrir sur ma page Web. J'ai une barre de navigation avec des éléments de navigation tels que la connexion ou la déconnexion, je reçois une erreur très similaire.

{% extends 'wiki/base.html' %} 
{% load wiki_extra %} 

<html> 
     <head> 
       <title>{{page_name}}</title> 
     </head> 
     <body> 
      {% block content %} 
       <h1>{{page_name}}</h1> 
       {% autoescape off %} 
       {{content|markup}} 
       {% endautoescape %} 
       <div class="col-lg-12 text-center"> 
       <form action="{% url 'wiki:EditPage' page_name=page_name %}"> 
        <button class="btn btn-lg btn-danger" type="submit">Edit this page?</button> 
       </form> 
       </div> 
      {% endblock %} 
     </body> 
</html> 

erreur pleine

Request Method: GET 
Request URL: http://127.0.0.1:8000/wiki/page/Start/ 
Django Version: 1.9.7 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for '' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

Edit: Le problème est dans la base.html dans la section de la barre de navigation. J'ai découvert en supprimant des parties de mon code dans le base.html dont je base tous les autres fichiers de et a constaté que ces liens sont en quelque sorte briser mon code. Quelqu'un peut-il me dire ce qui ne va pas avec ça? Mon code ressemble à ceci:

<!-- Navigation --> 
<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> 
    <div class="container"> 
     <!-- Brand and toggle get grouped for better mobile display --> 
     <div class="navbar-header"> 
      <a href="{% url 'wiki:ViewPage' page_name='Home' %}"> 
       <img alt="Brand" src="{% static "wiki/img/brand-image.png" %}""> 
      </a> 
      <a class="navbar-brand" href="{% url 'wiki:ViewPage' page_name=page_name %}"> 
       <strong>{{page_name}}</strong> 
      </a> 
     </div> 
     <!-- Collect the nav links, forms, and other content for toggling --> 
     <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
      <ul class="nav navbar-nav pull-right"> 
       <li> 
        {% if user.is_authenticated %} 
        <li class="divider-vertical"><a href="{% url 'wiki:upload_page' %}"> <span class = "glyphicon glyphicon-download-alt"> </span> Upload</a></li> 
        <li class="divider-vertical"><a href="{% url 'wiki:logout' %}"> <span class = "glyphicon glyphicon-off"> </span> Log out</a></li> 
        {% else %} 
        <li class="divider-vertical"><a href="{% url login %}"> <span class = "glyphicon glyphicon-off"> </span> Log in</a></li> 
        <li class="divider-vertical"><a href="{% url 'wiki:register' %}"> <span class = "glyphicon glyphicon-pencil"> </span> Sign up</a></li> 
        {% endif %} 
       </li> 
      </ul> 
     </div> 
     <!-- /.navbar-collapse --> 
    </div> 
</nav> 
+0

Eh bien ce qui ne correspond pas parce que vous ne disposez pas d'un modèle de vue qui correspond '/ page/start' –

+0

Qu'en est cette URL (r »^page/(? P [^ /] +)/$ ', views.view_page, name =' ViewPage ')? – Vocaloidas

+0

Bien sûr, mais c'est 'ViewPage' pas' EditPage', en plus vous utilisez 'wiki: EditPage' mais vous n'avez pas un tel espace de noms défini. S'il vous plaît lire la documentation. –

Répondre

0

Il est dû à cette ligne dans votre modèle:

<li class="divider-vertical"><a href="{% url login %}"> <span class = "glyphicon glyphicon-off"> </span> Log in</a></li> 

La balise modèle url tente de prendre la valeur de la variable puis login trouver un revers correspond, mais cette variable n'existe pas, donc une chaîne vide est utilisée, d'où l'erreur sans nom.

Inverser pour '' avec arguments '()' et les arguments '{}' non trouvés.

le changement à une chaîne comme tout le reste:

{% url 'wiki:login' %}