2016-11-02 4 views
0

Ich habe seit ein paar Tagen Probleme damit und konnte keine Antworten finden. Grundsätzlich möchte ich die URL als die/als in wenn ich drucken möchte.Reverse für '' with arguments '()' und Schlüsselwortargumente nicht gefunden. Django

Ich verstehe, dass meine Regex wahrscheinlich falsch ist und geändert werden muss, aber hier ist mein Code.

Myproject/urls.py

url(r'^(?P<pk>)/$', views.page_detail, name='page_detail'), 

Es führt den Fehler auf der Leitung 5 function_list.html

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

{% block content %} 
{% for page in pages %} 
    <h1><a href="{% url 'page_detail' pk=page.pk %}">{{ page.function }}</a></h1> 
    <p>{{ page.usage|linebreaksbr }}</p> 
{% endfor %} 
{% endblock %} 

views.py

def page_detail(request, pk): 
    page = get_object_or_404(Page, pk=pk) 
    return render(request, 'wiki/page_detail.html', {'page': page}) 

page_detail

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

{% block content %} 
<h1>{{ page.function }}</h1> 
<p>{{ page.usage|linebreaksbr }}</p> 

{% endblock %} 

Der genaue Fehler ist

Reverse for 'page_detail' with arguments '()' and keyword arguments '{'pk': 'print'}' not found. 1 pattern(s) tried: ['page/(?P<pk>)/$'] 

wenn jemand irgendwelche Ideen oder Ressourcen für mich hat, zu betrachten ich es schätzen würde.

bearbeiten: include Seitenmodell

models.py

class Page(models.Model): 
    function = models.CharField(max_length=100, primary_key=True) 
    usage = models.CharField(max_length=200) 
    author = models.CharField(max_length=100) 
    library = models.CharField(max_length=100) 
    parameters = models.TextField() 
    returnValues = models.CharField(max_length=100) 
    examples = models.TextField() 
    notes = models.TextField() 
    seeAlso = models.TextField() 

Antwort

2

Aus Ihrer Frage, es scheint, dass Sie mehr als eine URL, die zu dieser Ansicht verweist. Entfernen Sie die doppelte URL. Wenn das nicht das Problem ist, stellen Sie sicher, dass Sie die "Objekt-ID" korrekt über die URL übergeben. Die "Objekt-ID" (?P<pk>\d+) ist ein erforderlicher Parameter in der URL zu DetailView.

+0

das war es, aber wie dow ich komme jetzt auf die Homepage. Ich bekomme einen 404, sobald ich die andere URL gelöscht habe. Ich habe URL gelöscht (r '^ $', views.functions_list, name = 'functions_list'), – Kenton

+0

Verwenden Sie eine separate URL für die Startseite. Mein Vorschlag ist, eine TemplateView zu verwenden und einen eindeutigen Namen für die gleiche zu geben. Das ist es. Happy Coding –

+0

Danke dir war eine große Hilfe – Kenton

1

Sie müssen die pk passen Sie in Ihrem regex vorbei sind:

url(r'^(?P<pk>\w+)/$', views.page_detail, name='page_detail'), 
#    ^^^ 

\w+ ist ein Zeichensatz, der alphanumerischen Zeichen entspricht, und den Unterstrich, die 'print' im aktuellen Kontext übereinstimmen.

Verwandte Themen