Django 3.0.3: NoReverseMatch в /: Обратный для 'post_new' без аргументов, не найденных. 1 образец (ы) пробовали: - PullRequest
0 голосов
/ 16 июня 2020

Нужна помощь. Я не передаю аргумент при использовании href, но шаблон URL все равно ищет аргумент.

Главный urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^$',include('portfolio.urls')),
    re_path(r'accounts/login/$',LoginView.as_view(),name='login'),
    re_path(r'accounts/logout/$',LogoutView,name='logout',kwargs={'next_page':'/'})
]

Portfolio.urls

   urlpatterns = [
    re_path(r'^$',views.PostListView.as_view(),name='post_list'),
    re_path(r'^about/$', views.AboutView.as_view(),name='about'),
    path ('post/new/',views.CreatePostView.as_view(),name='post_new'),
    re_path (r'^drafts/$',views.DraftListView.as_view(),name='post_draft_list'),]

<nav class="navbar navbar-dark bg-dark">
<div class ="container">
    <ul class= "navbar navbar-dark bg-dark">
        <li><a class='navbar-brand' href="{% url 'post_list' %}"> My Blog </a>
        <li><a href="https://www.github.com/">Github</a></li>
        <li><a href="https://www.linkedin.com/">Linkedin</a></li>
    </ul>    

    <ul class='nav nsvbsr-right'>
        {% if user.is_authenticated %}
            <li>
            <a href="{% url 'post_new' %}">New Post </a>
            <a href="{% url 'post_draft_list' %}">Draft </a>
            <a href="{% url 'logout' %}">Log Out</a>
            </li>
        <li>
        <a> Welcome : {{ user.username }} </a>
        </li>
        {% else %}
        <li> <a class='nav nsvbsr-right' href="{% url 'login' %}"> Login </a> </li> 
    {% endif %}
    </ul>
</div>
</nav>

Я получаю следующую ошибку: enter image description here

Вкратце: страница выдает ошибку после регистрации пользователя in (т.е. is_authenticated - истина).

Models.py

class CreatePostView(LoginRequiredMixin, CreateView):
    login_url="/login/"
    redirect_field_name="portfolio/post_detail.html"
    form_class = PostForm
    model = Post

1 Ответ

1 голос
/ 16 июня 2020

Удалите доллар из шаблона URL, который включает portfolio.urls.

re_path(r'^',include('portfolio.urls')),

Или переключитесь на path:

path('',include('portfolio.urls')),
...