Возникла проблема с перенаправлением с правильным значением pk в django - PullRequest
0 голосов
/ 26 апреля 2020

Итак, у меня проблемы с перенаправлением с использованием other_user pk. Я не могу понять, чтобы передать этот pk. Я либо передаю request.user pk, либо получаю 'локальную переменную' other_user ', на которую ссылается перед присваиванием'. Я могу передать other_user в свой шаблон, но я не могу объединить ссылку href с кнопкой для отправки формы. Интересно, возможно ли это? Я попытался сделать это через метод перенаправления с other_user.id, но не могу. Итак, в основном я получаю other_user, когда запрашиваю его, но я не знаю, как передать его на мой редирект, поэтому он доставит моего пользователя туда, где ему нужно go. Как бы я go решил эту проблему?

views.py/message

def message (request, profile_id):



if request.method == 'POST':



    form = MessageForm(request.POST)
    if form.is_valid():
        form.save()


        return redirect('dating_app:messages')
else:
    conversation, created = Conversation.objects.filter(members = request.user).filter(members= profile_id).get_or_create()

    other_user = conversation.members.filter(id=profile_id).get()

    form = MessageForm({'sender': request.user, 'conversation': conversation})

    context = {'form' : form, 'other_user': other_user }

    return render(request, 'dating_app/message.html', context)

message. html

<form method="post" action="{% url 'dating_app:message' user.id %}" class="form">


    {% csrf_token %}
    {% bootstrap_form form %}

    {% buttons %}
        <button name="submit">login</button>
    {% endbuttons %}

    <a href="{% url 'dating_app:messages' other_user.id %}">Start messaging </a>

    <input type="hidden" name="next"
        value="{% url 'dating_app:messages' other_user.id %}" />

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Хорошо, на самом деле это было простое исправление. Мне просто нужно было ввести other_user.id в раздел действий моей формы, где, как и прежде, я передавал user.id, который принимал мой request.user pk. Однако я смог получить other_user.id из моего other_user запроса на мой взгляд. В любом случае, я уже передавал 'other_user' : other_user в своем шаблоне, поэтому мне просто нужно было передать его в URL-адрес действия. Я также немного очистил свою форму.

<form method="post" action="{% url 'dating_app:message' **other_user.id** %}" class="form">


    {% csrf_token %}
    {% bootstrap_form form %}

    {% buttons %}
        <button name="submit">Send Message</button>
    {% endbuttons %}

0 голосов
/ 26 апреля 2020

Лучше добавить urls.py со своим вопросом. Я предполагаю, что у вас есть путь, определенный следующим образом.

app_name = "dating_app"
urlpatterns = [
    path("message/<pk>/", views.message, name="messages")
]

Теперь вы можете использовать reverse с таким аргументом.

return redirect(reverse("dating_app:messages", profile_id))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...