首页 > 解决方案 > 尝试在 urlpattern 中使用用户名来为每个用户提供唯一的链接

问题描述

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

我的意见.py

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

我的网址.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 %}

标签: djangodjango-viewsdjango-templates

解决方案


views.py 让我们假设您的模型是“个人资料”,并且您的“用户”与用户一对一相关,您应该使用以下内容:

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})

网址.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 作为配置文件。但是 slug 也可以


推荐阅读