Как передать данные из модели в 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>