Reputation: 69
I have been having trouble with this for a few dayss and havent been able to find any answers. Basically I want the url to be the / as in if its print then I want /print.
I understand that my regex is probably wrong and will need changed, but here is my code.
Myproject/urls.py
url(r'^(?P<pk>)/$', views.page_detail, name='page_detail'),
It throws the error on line 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 %}
The specific error is
Reverse for 'page_detail' with arguments '()' and keyword arguments '{'pk': 'print'}' not found. 1 pattern(s) tried: ['page/(?P<pk>)/$']
if anyone has any ideas or resources for me to look at I would appreciate it.
edit: include page model
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()
Upvotes: 0
Views: 1312
Reputation: 78554
You need to match the pk you're passing in your regex:
url(r'^(?P<pk>\w+)/$', views.page_detail, name='page_detail'),
# ^^^
\w+
is a character set that matches alphanumeric characters and the underscore, which will match 'print'
in the current context.
Upvotes: 1
Reputation: 223
From your question, it seems you have more than one url that points to that view. So, remove the duplicate url. If that's not the issue then make sure you are passing the "object id" correctly through the url. The "object id" (?P<pk>\d+)
is a required parameter in the url to DetailView.
Upvotes: 0