试图在urlpattern中使用username给每个用户一个唯一的链接



这是我的方法,如果你知道怎么做,请帮助

我views.py

def profile(request, username):
return render(request, 'profile.html')

我的urls . py

from django.conf.urls import url
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
# Template Urls!
app_name = 'accounts'
urlpatterns = [
path('Skolar/',views.base, name= 'base'),
path('Register/',views.register,name='register'),
path('login/', views.my_login_view, name='login'),
path('logout/',views.user_logout,name='logout'),
path('<slug:username>',views.profile, name='profile'),
path('EditProfile/',views.update_profile,name='editprofile'),
]

错误显示

Reverse for 'profile' with no arguments not found. 1 pattern(s) tried: ['(?P<username>[-a-zA-Z0-9_]+)$']

在我的HTML中我使用

<a class="dropdown-item" href="{% url 'accounts:profile' %}">My Account</a>

添加配置文件HTML,我想在点击链接后显示给用户

{% extends 'masteraccount.html' %}
{% block content %}
{% load static %}
<link rel="stylesheet" href="{% static  'css/accountscss/profile.css'%}">
<div class="">
<div class="page-content">
<label class="name" for="NAME">NAME:</label>
<p>{{user.first_name}} {{user.last_name}}</p>
<label for="Email">Email:</label>
<p>{{user.email}}</p>
<label for="Twitter">Twitter:</label>
<p>{{user.profile.twitter}}</p>
<label for="Facebook">Facebook:</label>
<p>{{user.profile.Facebook}}</p>
<label for="Facebook">About:</label>
<p>{{user.profile.about}}</p>
<label for="Facebook">Date of Birth:</label>
<p>{{user.profile.dob}}</p>
</div>
<a href="{% url 'accounts:editprofile' %}"> <button type="button" class="btn btn-primary btn-lg">Edit Profile</button> </a>
</div>
{% endblock %}

views.py让我们假设您的模型是'Profile',并且您的'user'与一对一的用户相关,您应该使用以下内容:

from django.shortcuts import render,get_object_or_404
def profile(request, username):
profile = get_object_or_404(Profile,user = username)
return render(request, 'profile.html',{'profile':profile})

urls . py:

from django.conf.urls import url
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
# Template Urls!
app_name = 'accounts'
urlpatterns = [
path('Skolar/',views.base, name= 'base'),
path('Register/',views.register,name='register'),
path('login/', views.my_login_view, name='login'),
path('logout/',views.user_logout,name='logout'),
path('<slug:username>/',views.profile, name='profile'),
path('EditProfile/',views.update_profile,name='editprofile'),
]

html

<a class="dropdown-item" href="{% url 'accounts:profile' request.user.username %}">My Account</a>

注意:在配置文件中使用pk总是更好。但也没关系

相关内容

最新更新