【问题标题】:Django 1.6 - Sending Parameters in url, raising the url miss match error?Django 1.6 - 在 url 中发送参数,引发 url 未匹配错误?
【发布时间】:2014-06-11 19:23:45
【问题描述】:

我有一个 html 文件中的项目列表,如下所示:

{% extends 'base.html' %}
{% block Content %}
   <div id="movie_list">
      {% for movie in movies %}
         <p class="movie-title"><a href="/movie/{{ movie.slug }}/">{{ movie.name }}</a> </p>
      {% endfor %}
</div> {% endblock %}

它显示一个电影名称列表,该列表中的每个项目都是一个链接!我尝试根据&lt;a&gt; 标签中的href 属性向服务器发送观看特定电影的请求。

模型处理这个请求如下:

def SpecificMovie(request, movie_slug):
    movie = Movie.objects.get(slug=movie_slug)
    context = {'movies': movie}
    return render_to_response('single_movie.html', context, context_instance=RequestContext(request))

它根据传入的movie_slug响应请求!

single_movie.html文件如下:

{% extends 'base.html' %}

{% block Content %}
  <div id="single_moive">
    <p class="movie-title">Name: {{ movies.name }}</p>

    <p class="movie-title">Des: {{ movies.description }}</p>

    <p class="movie-title">Country: {{ movies.country }}</p>
  </div>
{% endblock %}

而我的urlpatterns var 如下:

urlpatterns = patterns('', 
                   (r'^$', TemplateView.as_view(template_name='index.html')),
                   (r'^admin/', include(admin.site.urls)),
                   (r'^movie/$', 'movie_page.views.MoviesAll'),
                   (r'^movie/(?P<movie_slug>.)/$', 'movie_page.views.SpecificMovie'),
)

但是,当我点击每个项目时,会收到一条错误消息,指出 url 模式中存在未匹配项。页面截图如下:

如您所见,一切正常!但我不知道问题是什么!我阅读了以下链接(link1link2link3),但感谢任何 cmets。

【问题讨论】:

  • 点 (.) 只匹配一个字符。
  • 没有解决问题。我删除了点,但问题仍然存在。

标签: python django url


【解决方案1】:

正则表达式(?P&lt;movie_slug&gt;.) 匹配单个字符。你可能想要(?P&lt;movie_slug&gt;.+)

【讨论】:

  • +1 虽然.+ 太贪心了。 slug 的特定正则表达式在这里可能会更好(?P&lt;movie_slug&gt;[\w-]+)
  • 我之前删除了点,但问题没有解决!为什么会这样?
  • @Constantine 你想匹配一个或多个字符。点匹配一个,添加+ 使其匹配一个或多个。删除点使其不匹配。
猜你喜欢
  • 2020-05-13
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2015-12-03
  • 1970-01-01
  • 2016-02-25
相关资源
最近更新 更多