Форум сайта python.su
Привет, помогите пожалуйста решить следующую проблему:
При регистрации создается новый профиль пользователя, необходимо чтобы ссылка в шаблоне вела на страницу его профиля. Пробовал разными способами передать в ссылку PK профиля, но видимо что-то упустил и не могу понять как это сделать правильно.
Пробовал так:
{% url 'profile' pk=user.id %}
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)
class profile(DetailView): model = UserProfileM template_name = 'profile.html' context_object_name = 'user_profile'
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') ]
Отредактировано Rn4 (Июль 4, 2018 16:28:50)
Офлайн
{% url ‘profile’ user.id %}
в переменную само подставится
Офлайн
VadimKПопробовал, получаю ошибку:
{% url ‘profile’ user.id %}в переменную само подставится
TypeError at /accounts/profile/1/ get() got an unexpected keyword argument 'pk'
Отредактировано Rn4 (Июль 5, 2018 12:01:55)
Офлайн
Какая версия джанги ? И где ошибка получается, при рендеринге темплейта в котором формируется ссылка не профиль или при заходе в сам профиль ?
И судя по url правилам, возможно срабатывает какой то адрес в “path('accounts/', include('allauth.urls')),”. Т.е. эту конструкцию по хорошему надо ставить после “path('accounts/profile/<int:pk>/', views.profile.as_view(), name='profile')”
Офлайн
Версия Django 2.0.0
Ошибка возникает вообще на другой странице add-offer, которая казалось бы не имеет отношения к профилю.
Убрал из файла add-offer.html строчку
{% extends "base.html" %}
{% url 'profile' user.id %}
NoReverseMatch at /add-offer/
Reverse for ‘profile’ with keyword arguments ‘{’pk': None}' not found. 1 pattern(s) tried: ['accounts\\/profile\\/(?P<pk>+)\\/$']
Отредактировано Rn4 (Июль 8, 2018 23:13:23)
Офлайн