#python #django #django-models #django-views #django-templates
#python #django #django-модели #django-просмотры #django-шаблоны
Вопрос:
Здесь я пытаюсь получить идентификатор user_to_toggle, но он не отображается, и я думаю, это потому, что я делаю что-то не так. Меня смущает, как я могу получить идентификатор user_to_toggle. Я получаю его имя пользователя, но мне тоже нужен идентификатор пользователя. Вот мой код.
просмотры, pyy
class UserProfileFollowToggle(LoginRequiredMixin,View):
login_url = '/accounts/login/'
def post(self, request, *args, **kwargs):
user_pk_to_toggle=kwargs.get('pk') #this is returning None.
username_to_toggle = request.POST.get("username")#this is returning me username of toggle user.
profile_, is_following = UserProfile.objects.toggle_follow(request.user, request.user.id ,username_to_toggle)
return redirect(f'/profiles/{username_to_toggle}')
follow_to_toggle.html
<form class='form' method='POST' action="{% url 'profiles:toggle'%}">
{% csrf_token %}
<input type='hidden' name='username' value="{% if username %}{{ username }}{% else %}hello{% endif %}">
<button class='btn {% if is_following %}btn-warning{% else %}btn-primary{% endif %}'>{% if is_following %}Unfollow {% else %}Follow{% endif %}</button>
</form>
если требуется больше кода, чем скажите мне, я обновлю свой вопрос с этой информацией.
urls.py
app_name = 'profiles'
urlpatterns = [
path('user-profile/',UserProfileFollowToggle.as_view(),name = 'toggle'),
path('<str:username>/',UserProfileDetailView.as_view(),name = 'detail'),
]
Комментарии:
1. Добавьте URL-файл, который связан с этим представлением.
2. Я добавил их. Теперь вы можете видеть.
Ответ №1:
kwargs.get('pk')
возвращает None
, потому что вы на самом деле не указали ни одного аргумента ключевого слова. Если вы хотите, чтобы он возвращал значение, ваш URL-адрес должен выглядеть так user-profile/<int:pk>/
. Таким образом, вы должны соответствующим образом изменить свой шаблон {% url 'toggle' user_to_toggle.id %}
. Вам нужно передать user_to_toggle
объект в контекст при рендеринге страницы или получить его как-то еще, возможно, через связанный объект модели.