Как создать для каждого обьекта в базе свою привязку /username на django?
Подскажите как создавать каждому обьекту свою url привязку например 127.0.0.1:800/Rassul. Пытался вот так, но создает только одну страницу : Файл urls.py в приложений:
for i in account.objects.all():
if i.account_login == i.account_login:
userlogin = i.account_login
print(userlogin)
urlpatterns = [
path('', views.main, name = 'main'),
path('forgot', views.forgot, name = 'forgot'),
path('addaccount', views.addaccount, name = 'addaccount'),
path(userlogin, views.profile, name = userlogin)
]
Файл views.py:
def profile(request):
for a in account.objects.all():
return render(request, 'frontend/' + a.account_login + '.html')
Ответы (1 шт):
Автор решения: Anton Balmakov
→ Ссылка
Models:
class AdvUser(AbstractUser): # Студенты
surname = models.CharField(max_length=30 ,db_index=True, verbose_name="Отчество", blank=True)
img_user = models.ImageField('Аватар', upload_to='images/user/', blank=True)
phone = models.CharField(max_length=30 , verbose_name="Номер телефона", blank=True)
views
@user_passes_test_custom(check_group_and_activation, login_url='/manager-school/login')
def get_teachers(request):
teachers = AdvUser.objects.filter(groups__name='Teacher')
return render(request, "manager/other/teachers_list.html", {"teachers": teachers})
@user_passes_test_custom(check_group_and_activation, login_url='/manager-school/login')
def get_teacher_card(request, teacher_id):
teacher = get_object_or_404(AdvUser, id=teacher_id)
return render(request, "manager/other/teacher_card.html", {"teacher": teacher})
url
path('teachers/', get_teachers, name='get_teachers'),
path('teacher/<int:teacher_id>', get_teacher_card, name='get_teacher_card'),
Мой Advuser содержит в себе всех пользователей которые есть. Это и студенты и преподаватели. Я так понимаю вы хотите сделать что бы на одной странице был один объект и на другой странице был другой объект. Если это разные модели то следовательно нужно писать разные views. И в ней передавать путь к html шаблону в котором будет отображаться тот или иной объект. Надеюсь я вам помог!