Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 14, 2017 13:20:46

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

Только начинаю осваивать django и сталкиваюсь периодически с разными ошибками. На многие из них ответ нашел здесь, но с этой все никак.Собственно сама ошибка:

Reverse for ‘topic’ with arguments ‘(’',)' not found. 1 pattern(s) tried:

views.py

 def topic(request,topic_id):
    """Выводит одну тему и все ее записи."""
    topic = Topic.objects.get(id=topic_id)
    entries = topic.entry_set.order_by('-date_added')
    context = {'topic' : topic, 'entries': entries}
    return  render(request, 'learning_logs/topic.html', context)

urls.py

 from django.conf.urls import url
from . import views
 
urlpatterns = (
    # Домашняя страница
    url(r'^$', views.index, name ='index'),
 
    # Вывод всех тем.
    url(r'^topics/$', views.topics, name='topics'),
 
    url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
)

topics.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> {% extends "learning_logs/base.html" %}</title>
</head>
<body>
{% block content %}
<p>Topics</p>
<ul>
    {% for topic in topics %}
    <li>
        <a href="{% url 'topic' topic_id %}">{{ topic }}</a>
    </li>
    {% empty %}
    <li> No topics have benn added yet.</li>
    {% endfor %}
</ul>
{% endblock content %}
</body>
</html>

topic.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    {% extends 'learning_logs/base.html' %}
</head>
<body>
{% block content %}
 
<p> Topic: {{ topic }}</p>
<p> Entries:</p>
<ul>
    {% for entry in entries %}
    <li>
        <p> {{ entry.date_added|date:'M d, Y H:i' }}</p>
        <p> {{ entry.text|linebreaks }}</p>
    </li>
    {% empty %}
    <li>
        Нет записей в этом topic.
    </li>
    {% endfor %}
</ul>
{% endblock content %}
</body>
</html>

base.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>
    <a href="{% url 'index' %}">Learning Log</a> -
    <a href="{% url 'topics' %}">Topics</a>
 
</p>
{% block content %}{% endblock content %}
</body>
</html>

Перехожу по ссылке http://localhost:8000/topics/ - получаю ошибку. Перехожу по ссылке, к примеру http://localhost:8000/topics/1/ - все норм, все отображается…
Python: 3.6
Django: 2.0

Офлайн

#2 Дек. 14, 2017 13:23:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

    url(r'^topics/$', views.topics, name='topics'),

url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
дайте им разные имена



Офлайн

#3 Дек. 14, 2017 13:37:28

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

FishHook
К сожалению не помогло.

Офлайн

#4 Дек. 14, 2017 13:52:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

 {% for topic in topics %}
    <li>
        <a href="{% url 'topic' topic_id %}">{{ topic }}</a>
    </li>
    {% empty %}
Вот это вот, что это? У вас же нет переменной topic_id



Офлайн

#5 Дек. 14, 2017 13:56:18

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

Если изменить topics.html вот так:

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> {% extends "learning_logs/base.html" %}</title>
</head>
<body>
{% block content %}
<p>Topics</p>
<ul>
    {% for topic in topics %}
    <li>
{{ topic }}
    </li>
    {% empty %}
    <li> No topics have benn added yet.</li>
    {% endfor %}
</ul>
{% endblock content %}
</body>
</html>

Ошибка пропадает. Но Topics не становятся ссылками, а просто текст. Чет совершенно гусей не могу собрать)

Отредактировано pazzetif (Дек. 14, 2017 14:08:32)

Офлайн

#6 Дек. 14, 2017 14:01:26

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

FishHook
Вот это вот, что это? У вас же нет переменной topic_id
Вообще это из книги. По ней учу…
Your text to link here…

Отредактировано pazzetif (Дек. 14, 2017 14:01:44)

Офлайн

#7 Дек. 14, 2017 14:09:38

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

FishHook
Вот это вот, что это? У вас же нет переменной topic_id
Буду благодарен, если подскажите как это правильно записать. Уже голову сломал…

Офлайн

#8 Дек. 14, 2017 14:50:59

pazzetif
Зарегистрирован: 2017-12-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в регулярном выражении? Django

Спасибо документации Django.
Заработало таким образом

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> {% extends "learning_logs/base.html" %}</title>
</head>
<body>
{% block content %}
<p>Topics</p>
<ul>
    {% for topic in topics %}
    <li>
<a href="{{ topic.id }}/"> {{ topic }}</a>
    </li>
    {% empty %}
    <li> No topics have benn added yet.</li>
    {% endfor %}
</ul>
{% endblock content %}
</body>
</html>

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version