Как использовать две формы в шаблонах Django, и как вызывать разные функции при отправке формы - PullRequest
0 голосов
/ 27 сентября 2019

Я использую две формы в одном шаблоне.Когда я отправляю 2-ю форму, ее вызывающую первую форму, я немного сбиваюсь с толку, когда я допустил ошибку, кто-то мне в этом поможет.

index.html

<form action="#" method="post">
{% csrf_token %}
<input type="text" name="username" id="username">
<a href="{% url 'app:profile' %}"><button type="submit"> Submit</button></a>
</form>

<form action="#" method="post">
{% csrf_token %}
<input type="text" name="review" id="review">
<a href="{% url 'app:feedback' %}"><button type="submit"> Submit</button></a>
</form>

views.py

def profile(request):
    if request.method == 'GET':
        # Some operation
        return render(request, 'index.html', {})

    elif request.method == 'POST':
        username = request.POST.get('username')
        res = User(username=username)
        res.save()
        return redirect('/home/')
    return redirect('/login/')

def feedback(request):
    if request.method == 'POST':
        review= request.POST.get('review')
        res = Feedback(comment=review)
        res.save()
        return redirect('/home/')
    return redirect('/home/')

urls.py

app_name = 'app'
urlpatterns = [
   path('profile/', views.profile, name="profile"),
   path('feedback/', views.feedback, name="feedback"),
]

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Я думаю, что действия должны отличаться, чтобы определить, какая форма будет отправлять запрос в какое представление:

<form action="{% url 'app:profile' %}" method="post">
    {% csrf_token %}
    <input type="text" name="username" id="username">
    <button type="submit"> Submit</button>
</form>

<form action="{% url 'app:feedback' %}" method="post">
    {% csrf_token %}
    <input type="text" name="review" id="review">
    <button type="submit"> Submit</button>
</form>
0 голосов
/ 27 сентября 2019

Добавить атрибут имени в submit.

<form action="#" method="post">
<input type="text" name="username" id="username">
<a href="{% url 'app:profile' %}"><button type="submit" name="attr_name"> Submit</button></a>
</form>

И проверить имя в views.py

def profile(request):
    if request.method == 'POST' and 'attr_name' in request.POST:
        # Some operation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...