django urls中有连字符的问题

vim*_*vim 2 python django url-routing

我在Django url conf文件中有一组简单的URL,它指向一些对象细节通用视图.

urlpatterns = patterns('',  
url(r'^projects/(?P<slug>[\w-]+)/$', ProjectDetailView.as_view(), name='view_project'),
url(r'^roles/(?P<slug>[\w-]+)/$', RoleDetailView.as_view(), name='view_role'),
)
Run Code Online (Sandbox Code Playgroud)

问题是,只要网址中有连字符(例如: - /projects/new-project/)slug,Djangos开发服务器就会卡住.我已经检查过pdb,解析url并根据slug从数据库中获取对象没有问题.但是当模板被渲染时,它会被卡在某处.我无法弄清楚问题的根源.知道问题是什么吗?

视图代码是,

class ProjectDetailView(DetailView):
  model=Project
  context_object_name='project_obj'
  slug_field='slug'

  @method_decorator(login_required)
  def dispatch(self, *args, **kwargs):
    return super(ProjectDetailView, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

模板代码是,

 {% extends "base.html" %}
    {% load static %}
    {% block static %}
    <link rel="stylesheet" type="text/css" href="{% get_static_prefix %}css/demo_table.css">
    <script type="application/javascript" src="{% get_static_prefix %}js/users-index.js"></script>
    {% endblock %}

        {% block content %}
        <div id="itemlist">    

          {% if project_obj %}
          <div>
            <p>{{ project_obj.title }}</p>
            <p>{{ project_obj.description }}</p>
          </div>
          {% else %}
          <p>No Details available.</p>
          {% endif %}
        <div>
        {% endblock %}
Run Code Online (Sandbox Code Playgroud)

从模板中删除一些标签后,它开始工作,

<div id="itemlist">    

      {% if project_obj %}
      <div>
        <p>{{ project_obj.title }}</p>
        <p>{{ project_obj.description }}</p>
      </div>
      {% else %}
      <p>No Details available.</p>
      {% endif %}
    <div>
Run Code Online (Sandbox Code Playgroud)

Tor*_*cht 5

更改[\w-]+[-\w]+.对我来说,[\w-]+永远不会使用python regexp.