NoReverseMatch "Недопустимо новая функция или имя шаблона" - PullRequest
0 голосов
/ 25 августа 2018

enter image description here

Прошло несколько часов, и я не могу понять, где моя ошибка.мои мысли были в моем файле category.html или файле new_topic.html.Я пытаюсь добавить новую тему в категорию.Существует несколько категорий, и введенная тема перейдет к определенной категории в зависимости от того, что выберет пользователь.Каждый раз, когда я нажимаю на ссылку, чтобы добавить новую тему в определенную категорию, я получаю сообщение об ошибке, показанное выше.Все остальное работает просто отлично.

urls.py.Файл:

app_name = 'blogging_logs'

urlpatterns = [
    # Home page
    path('', views.index, name='index'),

    # Show all Categories
    path('categories/', views.categories, name='categories'),

    # Show all topics associated with category
    re_path(r'^topics/(?P<category_id>\d+)/$', views.topics, name='topics'),

    # Show single topics
    re_path(r'^topic/(?P<entry_id>\d+)/$', views.topic, name='topic'),

    # Page for adding a new category
    path('new_category/', views.new_category, name='new_category'),

    # Page for adding new topics
    re_path(r'^new_topic/(?P<category_id>\d+)/$', views.new_topic, name='new_topic'),
]

файл view.py:

def new_category(request):
    """Add a new category"""
    if request.method != 'POST':
        # No data submitted; create a blank formself.
        form = CategoryForm()
    else:
        # POST data submitted; process data
        form = CategoryForm(data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('blogging_logs:categories'))

    context = {'form': form}
    return render(request, 'blogging_logs/new_category.html', context)


def new_topic(request, category_id):
    """ Add new topic to category """
    category = Category.objects.get(id=category_id)

    if request.method != 'POST':
        # No data submitted; create a blank formself.
        form = TopicForm()
    else:
        form = TopicForm(data=request.POST)
        if form.is_valid():
            new_topic = form.save(commit=False)
            new_topic.Category = category
            new_topic.save()
            return HttpResponseRedirect(reverse('blogging_logs:category', args=[category_id]))

    context = {'category': category, 'form': form}
    return render(request, 'blogging_logs/new_topic.html', context)

category.html

{% extends "blogging_logs/base.html" %}

{% block content %}
  <h1>{{ Categories }}</h1>

  <p>Topics:</p>
  <ul>
      {% for topic in topics %}
        <li><a href="{% url 'blogging_logs:topic' topic.id %}">{{ topic }}</a></li>
        <p>{{topic.date_added|date:'M d, Y H:i' }}</p>
        {% empty %}
          <li>No categories entered yet.</li>
      {% endfor %}
  </ul>

  <a href="{% url 'blogging_logs:new_topic' category.id %}">Add New Topic</a>

{% endblock content %}

new_topic.html

{% extends "blogging_logs/base.html" %}

{% block content %}
  <p><a href="{% url 'blogging_logs:category' category.id %}">{{ category }}</a></p>

  <form class="" action="{% url 'blogging_logs:new_topic' category.id %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button name='submit'> Add Topic </button>
  </form>
{% endblock content %}

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

У вас нет категории имени в вашем urls.py

0 голосов
/ 25 августа 2018

Похоже, проблема в шаблоне new_topic.html в

{% url 'blogging_logs:category' category.id %}

Вы ищете представление blogging_logs:category, которого не существует.Возможно, вы имели в виду:

{% url 'blogging_logs:topics' category.id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...