Как работает {"% url 'news_id' %"}
? У меня есть шаблон url url(r'^((?:\w|-)+)/$', 'comments.views.home', name='news_id')
, но я все еще получаю NoReverseMatch
.Как работает шаблон шаблона URL-адреса Django?
Это говорит
Reverse для 'news_id' с аргументами '()' и именованных аргументов '{}' не найден. 1 образец (s) попробовал: [ '((?: \ Ш | -) +)/$']
views.py
from django.shortcuts import render
from comments.models import User
from django.http import HttpResponseRedirect, HttpResponse
from django.template import RequestContext, loader, Context
from comments.models import News, User, Comment
from django.core.urlresolvers import resolve
def home(request, url_arg):
print "in Views.py", "and url_arg = ", url_arg
c = Comment.objects.all().filter(news__news_id=url_arg)
n = News.objects.all().get(news_id=url_arg)
cont = Context({'news': n.text, 'cts': c, 'news_id': n.news_id})
rc = RequestContext(request, cont)
t = loader.get_template('home.html')
print 'n = ', n
return HttpResponse(t.render(rc))
return render(request, 'home.html', context_dict, context_instance=RequestContext(request))
def submit(request):
print "request.path_info = ", request.path_info
print "in submit method and url = ", resolve(request.path_info).url_name, " & other try = ", request.resolver_match.url_name
news_id = request.POST.get('news_id')
user_id = request.POST.get('user_id')
comment_text = request.POST.get('comment')
print "news_id =", news_id, "user_id = ", user_id, "comment_text = ", comment_text
n = News(news_id=news_id)
n.save()
u = User(name='random',user_id=user_id)
u.save()
c = Comment(news=n, user=u, text=comment_text)
c.save()
return HttpResponse("Thanks!")
urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
# Examples:
url(r'^(?:\w|-)+/submit/$','comments.views.submit'),
url(r'^((?:\w|-)+)/$', 'comments.views.home', name='news_id'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
]
home.html
<p>
News: {{news}}<br>
</p>
<form action="{% url news_id %}" method="post"> {% csrf_token %}
User Id: <input type="text" name="user_id"> <br>
Comment:<br>
<input type="text" name="comment" placeholder="Express your opinion ...">
<input type="submit" value="Submit"> <br>
{% for ct in cts %}
{{ ct.text }}<br>
{% endfor %}
</form>
Возможно, если вы разместите views.py, некоторые html, urls.py, это даст вам более ясную проблему. – Trix