django urls中有连字符的问题

时间:2011-06-23 06:03:50

标签: 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'),
)

问题是,只要网址中有连字符(例如: - /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)

模板代码是,

 {% 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 %}

从模板中删除部分标签后,它开始工作,

<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>

2 个答案:

答案 0 :(得分:5)

[\w-]+更改为[-\w]+。对我来说[\w-]+永远不适用于python regexp。

答案 1 :(得分:1)

我的猜测是你写了一个自定义模板标签,但它已经坏了。您在base.html:P

中使用它