Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
How Django';s的url模板标记有效吗?_Django_Django Templates_Templatetags - Fatal编程技术网

How Django';s的url模板标记有效吗?

How Django';s的url模板标记有效吗?,django,django-templates,templatetags,Django,Django Templates,Templatetags,{“%url”新闻\u id“%”是如何工作的? 我确实有一个url模式url(r'^((?:\w |-)+)/$”,“comments.views.home”,name='news\u id'),但我仍然得到NoReverseMatch 上面说 未找到参数为“()”且关键字参数为“{}”的“news_id”的反转。已尝试1个模式:['((?:\w |-)+)/$'] views.py from django.shortcuts import render from comments.model

{“%url”新闻\u id“%”
是如何工作的? 我确实有一个url模式
url(r'^((?:\w |-)+)/$”,“comments.views.home”,name='news\u id')
,但我仍然得到
NoReverseMatch

上面说

未找到参数为“()”且关键字参数为“{}”的“news_id”的反转。已尝试1个模式:['((?:\w |-)+)/$']

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!")
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)),
]
url.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!")
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>

新闻:{{News}}

{%csrf_令牌%} 用户Id:
评论:

{cts%中ct的百分比} {{ct.text}}
{%endfor%}
您在这里误解了一些事情。特别是,您混淆了URL模式的名称以及需要传递给它的参数

例如,如果您想在博客中捕获一篇文章的ID并将其传递给详细视图,您通常会执行以下操作:

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

还有,你的正则表达式很奇怪。您有一个非捕获组作为捕获组的唯一内容。我不知道你到底想用这个模式做什么,但通常主页根本不会接受任何参数——事实上你并没有传递任何参数。只需使用
r'^$'

也许发布views.py、一些html、url.py,这会让你的问题更清楚。抱歉,由于回复太晚,我的网络无法在这里工作。第二个url
((?:\w |-)+)
不是非捕获url。它说不要捕获单个单词,而是捕获由
-
连接的整个单词序列。第一个url
(?:\w |-)+
是非捕获url,因为我想要的是,在当前url类似于
example.com/news\u id
之后,submit应该将其重定向到
example.com/news\u id/submit
。你觉得这个逻辑正确吗,尤其是这个提交的逻辑?