Проблема с URL-адресами Django, в которых есть дефис - PullRequest
2 голосов
/ 23 июня 2011

У меня есть простой набор URL-адресов в конфигурационном файле URL-адреса Django, который указывает на некоторые общие представления деталей объекта.

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'),
)

Проблема заключается в том, что в URL-адресе есть дефис (например: - /projects/new-project/) slug, сервер разработки Djangos застрял.Я проверил с pdb, и нет проблем с анализом URL и получением объекта из базы данных на основе слаг.Но он застревает где-то, когда шаблон отображается.Я не могу понять источник проблемы.Любая идея, в чем проблема?

Код представления,

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 ]

5 голосов
/ 23 июня 2011

Измените [\w-]+ на [-\w]+.Для меня [\w-]+ никогда не работает с регулярными выражениями Python.

1 голос
/ 23 июня 2011

Я предполагаю, что вы написали пользовательский тег шаблона, но он не работает.Вы используете его в base.html: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...