Django:与 URL 中的正则表达式无反向匹配

加勒特

我正在尝试将 url 转到用户个人资料的页面。(?P<pk>\d+)在 url 中使用它来执行此操作,但是出现错误。此外,如果我删除在 base.html 中链接它的那个问题就会消失。但是后来我在 nabber 中没有链接...

错误:

NoReverseMatch at /
Reverse for 'user_profile' with no arguments not found. 1 pattern(s) tried: ['user/(?P<pk>\\d+)/$']

In template /Users/garrettlove/Desktop/evverest/templates/base.html, error at line 23
Reverse for 'user_profile' with no arguments not found. 1 pattern(s) tried: ['user/(?P<pk>\\d+)/$']
13      
14  <body>
15  
16      <nav>
17          <div class="container">
18              <a class="brand" href="{% url 'index' %}">Evverest</a>
19              
20              <div class="navbar">
21                  <a class="nav-link btn" href="{% url 'index' %}">Home</a>
22                  {% if user.is_authenticated %}
23                      <a class="nav-link" href="{% url 'users:user_profile' %}">New Color Set</a>
24                      <a class="nav-link" href="{% url 'users:user_logout' %}">Logout</a>
25                  {% else %}
26                      <a class="nav-link" href="{% url 'users:user_login' %}">Login</a>
27                      <a class="nav-link" href="{% url 'register' %}">Register</a>
28                  {% endif %}
29              </div>
30          </div>
31      </nav>
32      
33      <div class="container">

它将上面代码中的第 23 行高亮显示为错误。

这是我的代码:

应用网址:

from django.conf.urls import url
from users import views

app_name = 'users'

urlpatterns = [
    url(r'^(?P<pk>\d+)/$',views.UserProfileView.as_view(),name='user_profile'),
    url(r'^(?P<pk>\d+)/edit$',views.UserEditProfileView.as_view(),name='user-profile-edit'),
    url(r'^login/$',views.user_login,name='user_login'),
    url(r'^logout/$',views.user_logout,name='user_logout',kwargs={'next_page':'/'}),
    url(r'^register/$',views.register,name='register'),
]

基本文件

<!DOCTYPE html>
{% load staticfiles %}

<html lang="en">
    <head>
        <title>Evverest</title>

        <meta name"viewport" content="width=device-width, initial-scale=1">
        <meta charset="uft-8">
        <link rel="shortcut icon" href="/images/favicon.ico">
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
    </head>

<body>

    <nav>
        <div class="container">
            <a class="brand" href="{% url 'index' %}">Evverest</a>

            <div class="navbar">
                <a class="nav-link btn" href="{% url 'index' %}">Home</a>
                {% if user.is_authenticated %}
                    <a class="nav-link" href="{% url 'users:user_profile' %}">New Color Set</a>
                    <a class="nav-link" href="{% url 'users:user_logout' %}">Logout</a>
                {% else %}
                    <a class="nav-link" href="{% url 'users:user_login' %}">Login</a>
                    <a class="nav-link" href="{% url 'register' %}">Register</a>
                {% endif %}
            </div>
        </div>
    </nav>

    <div class="container">
        {% block content %}
        {% endblock %}
    </div>

</body>

</html>

应用程序视图:

from django.shortcuts import render
from users.forms import UserForm,UserProfileForm
from users.models import UserProfileInfo

from django.contrib.auth import authenticate,login,logout
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import (TemplateView,ListView,
                                    DetailView,CreateView,
                                    UpdateView,DeleteView)

# Create your views here.
def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username,password=password)

        if user:
            if user.is_active:
                login(request,user)
                return HttpResponseRedirect(reverse('index'))
            else:
                return HttpResponse("Account now active")

        else:
            print("Login Unsuccessful")
            return HttpResponse("Username and/or password are not correct")

    else:
        return render(request,'login.html',{})

def register(request):
    registered = False

    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()

            profile = profile_form.save(commit=False)
            profile.user = user

            if 'profile_pic' in request.FILES:
                profile.profile_pic = request.FILES['profile_pic']

            profile.save()
            registered = True
        else:
            print(user_form.errors,profile_form.errors)
    else:
        user_form = UserForm()
        profile_form = UserProfileForm()

    return render(request,'register.html',{
                                        'user_form':user_form,
                                        'profile_form':profile_form,
                                        'registered':registered
                                        })

@login_required
def user_logout(request):
    logout(request)
    return HttpResponseRedirect(reverse('index'))

class HomeView(ListView):
    model = UserProfileInfo
    ordering = ['-join_date']

class UserProfileView(DetailView):
    model = UserProfileInfo

class UserEditProfileView(LoginRequiredMixin,UpdateView):
    login_url = '/login/'
    redirect_field_name = '/users_detail.html'
    form_class = UserProfileForm
    model = UserProfileInfo

项目网址:

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
from users import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$',views.HomeView.as_view(),name='index'),
    url(r'^user/',include('users.urls',namespace='users')),
    url(r'^login/',views.user_login,name='login'),
    url(r'^logout/',views.user_logout,name='logout',kwargs={'next_page':'/'}),
    url(r'^register/',views.register,name='register'),
]
ykh

将您的第一个代码块第 23 行更改为

<a class="nav-link" href="{% url 'users:user_profile' user.id %}">New Color Set</a>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django url正则表达式未匹配

来自分类Dev

正则表达式Django URL

来自分类Dev

正则表达式Django URL

来自分类Dev

Django URL中的正则表达式错误

来自分类Dev

Django URL中的正则表达式

来自分类Dev

在正则表达式Django URL中写'-'

来自分类Dev

Django中的正则表达式URL

来自分类Dev

在Django url正则表达式中消失`+`

来自分类Dev

Django反向正则表达式匹配

来自分类Dev

Django url正则表达式终止$不匹配路由

来自分类Dev

Django REST框架url正则表达式模式不匹配

来自分类Dev

django1.8在url.py中具有url的正则表达式

来自分类Dev

Django URL,不同的正则表达式?

来自分类Dev

Django URL模式顺序和正则表达式

来自分类Dev

Django:如何读取嵌套的URL正则表达式

来自分类Dev

Django正则表达式URL不起作用

来自分类Dev

Django URL正则表达式未捕获Int

来自分类Dev

Django URL正则表达式可与GET正确匹配,但不能与POST正确匹配

来自分类Dev

为什么我的正则表达式无法在Django中解析此URL?

来自分类Dev

Django URL的正则表达式中的r''和r'^ $'有什么区别?

来自分类Dev

在Django URL中以正则表达式传递电子邮件

来自分类Dev

正则表达式以匹配Powershell中的URL

来自分类Dev

邮件URL中的正则表达式匹配密码

来自分类Dev

URL中的正则表达式,用于匹配ID

来自分类Dev

正则表达式以匹配Powershell中的URL

来自分类Dev

使用正则表达式匹配HTML中的url

来自分类Dev

Django中匹配网址的正则表达式

来自分类Dev

正则表达式匹配要在 Django 项目中的 URL 模式中使用的字母和数字的组合?

来自分类Dev

正则表达式 URL 表达式匹配