Ошибка NoReverseMatch, даже если представление и путь к URL уже существуют - PullRequest
0 голосов
/ 28 марта 2019

Я все еще изучаю веревки для программирования с django, и когда я пытаюсь открыть свой сайт на localhost, я получаю сообщение об ошибке, которое не помогает указать мне правильное направление.Это сообщение об ошибке, которое я получаю из файла с именем base.html:

NoReverseMatch at /
Reverse for 'main-createchannel' not found. 'main-createchannel' is not a valid view function or pattern name.

той части base.html, которая вызывает URL-адреса

<div class="collapse navbar-collapse" id="navbarToggle">
    <div class="navbar-nav mr-auto">
        <a class="nav-item nav-link" href="{% url 'main:main-about' %}">About</a>

        <a class="nav-item nav-link" href="{% url 'main:main-channelsettings' %}">Channel Settings</a>
        <a class="nav-item nav-link" href="{% url 'main:main-channelinfo' %}">Channel Information</a>
        <a class="nav-item nav-link" href="{% url 'main:main-createchannel' %}">Create Channel</a>
        <a class="nav-item nav-link" href="{% url 'main:main-findchannel' %}">Find Channel</a>

        <a class="nav-item nav-link" href="{% url 'main:main-ticketrequest' %}">Submit a Ticket</a>
    </div>
    <!-- Navbar Right Side -->
    <div class="navbar-nav">
        <a class="nav-item nav-link" href="{% url 'main:main-userprofile' %}">Login</a>
        <a class="nav-item nav-link" href="{% url 'main:users-register' %}">Register</a>
        {% if user.is_authenticated %}
            <a class="nav-item nav-link" href="{% url 'main:main-userprofile' %}">Profile</a>
        {% endif %}
    </div>
</div>

views.py

def createchannelpage(request):
    if request.method == 'POST':
        form = CreateChannelForm(request.POST)
        if form.is_valid():
            form.save()
            channel_room_name = form.cleaned_data.get('channel_room_name')
            #messages.success(request, f'{channel_room_name} was created!')
            return redirect('/')
    else:
        form = CreateChannelForm()
    return render(request, 'main/createChannel.html', {
        'form': form,
        'title': "Create a Channel"
    })

и, наконец, urls.py

from . import views
from users import views as users_views

app_name = 'main'

urlpatterns = [
    path('', views.homepage, name='main-home'),
    path('register/', users_views.register, name='users-register'),
    path('about/', views.aboutpage, name='main-about'),
    path('createchannel/', views.createchannelpage, name='main-createchannel'),
    path('findchannel/', views.findchannelpage, name='main-findchannel'),
    path('channelinfo/', views.channelinfopage, name='main-channelinfo'),
    path('channelsettings/', views.channelsettingspage, name='main-channelsettings'),
    path('userprofile/', views.userprofilepage, name='main-userprofile'),
    path('ticketrequest',views.ticketrequestpage, name='main-ticketrequest'),
    re_path(r'^(?P<channel_room_name>[^/]+)/$', views.channelinfopage, name='channel'),
]

Когда я попытался вызвать страницы с помощью {% url views.createchannelpage%}, это не сработало.Но ни один из них не вызывал URL по имени, как {% url 'main-createchannel'%}.

Я чувствую, что перепробовал все, что могу найти в Интернете, чтобы выручить меня.Это просто что-то простое, что я где-то пропустил?Спасибо!

...