Найти - Пользователи
Полная версия: Django / ссылка на профиль пользователя
Начало » Центр помощи » Django / ссылка на профиль пользователя
1
Rn4
Привет, помогите пожалуйста решить следующую проблему:

При регистрации создается новый профиль пользователя, необходимо чтобы ссылка в шаблоне вела на страницу его профиля. Пробовал разными способами передать в ссылку PK профиля, но видимо что-то упустил и не могу понять как это сделать правильно.

Пробовал так:
 {% url 'profile' pk=user.id %}
и это работает, но на другой странице появляется ошибка: Reverse for ‘profile’ with keyword arguments ‘{’pk': None}' not found.

models

 class UserProfileM(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, unique=True)
    def __str__(self):
        return self.user.username
def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = UserProfileM.objects.create(user=kwargs['instance'])
post_save.connect(create_profile, sender=User) 

view

 class profile(DetailView):
    model = UserProfileM
    template_name = 'profile.html'
    context_object_name = 'user_profile'

url

 urlpatterns = [
    path('', views.index, name='index'),
    path('accounts/', include('allauth.urls')),
    path('add-offer', views.addOffer, name='addOffer'),
    path('accounts/profile/<int:pk>/', views.profile.as_view(), name='profile')
]

VadimK
{% url ‘profile’ user.id %}
в переменную само подставится
Rn4
VadimK
{% url ‘profile’ user.id %}в переменную само подставится
Попробовал, получаю ошибку:
 TypeError at /accounts/profile/1/
get() got an unexpected keyword argument 'pk'
VadimK
Какая версия джанги ? И где ошибка получается, при рендеринге темплейта в котором формируется ссылка не профиль или при заходе в сам профиль ?

И судя по url правилам, возможно срабатывает какой то адрес в “path('accounts/', include('allauth.urls')),”. Т.е. эту конструкцию по хорошему надо ставить после “path('accounts/profile/<int:pk>/', views.profile.as_view(), name='profile')”
Rn4
Версия Django 2.0.0
Ошибка возникает вообще на другой странице add-offer, которая казалось бы не имеет отношения к профилю.

Убрал из файла add-offer.html строчку
 {% extends "base.html" %}
и все заработало.

По какой-то причине этот файл конфликтует с конкретной ссылкой
 {% url 'profile' user.id %}
из файла base.html и выдает ошибку:

NoReverseMatch at /add-offer/
Reverse for ‘profile’ with keyword arguments ‘{’pk': None}' not found. 1 pattern(s) tried: ['accounts\\/profile\\/(?P<pk>+)\\/$']


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB