Как передать данные из модели в url в django?

У меня есть пользовательская модель следующего вида:

class Utilisateur(models.Model):
    username = models.CharField(max_length=50)
    email = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    phone = models.CharField(max_length=80)

А у меня мой взгляд заявлен так:

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

Я хочу, чтобы мой url отображался с именем пользователя в нем, что-то вроде этого http://127.0.0.1:8000/profile/username1/. Как я могу передать имя пользователя в url?

В вашем URL conf:

path('profile/<str:username>/', profile)

Не забудьте добавить имя пользователя везде, где отображается ссылка.

Прочитайте документацию по диспетчеру URL в django. В ней описано большинство моделей использования.

https://docs.djangoproject.com/en/4.0/topics/http/urls/

В вашем urls.py вы должны определить переменную часть URL, которая должна содержать имя пользователя. Что-то вроде:

from django.urls import path

from .views import profile

urlpatterns = [
    path('profile/<str:username>/', profile, name='user_profile'),
]

В вашем views.py необходимо настроить представление для получения аргумента URL:

from django.contrib.auth import get_user_model
from django.shortcuts import get_object_or_404

def profile(request, username):
    # do whatever you want,
    # maybe getting the user for the provided username and pass it to the template
    user = get_object_or_404(get_user_model(), username=username)
    return render(request, 'profile.html', {'user': user})

Шаблоны могут содержать URL любого профиля, который генерируется с помощью тега шаблона {% url 'name' arguments %}.

This is the profile of
<a href="{% url 'user_profile' username=user.username %}">
  {{ user.username }}
</a>
Вернуться на верх