Джанго - Взятие ценностей из POST - PullRequest
0 голосов
/ 20 октября 2019

Я передаю некоторые данные в свой шаблон ("назначений.html"), который выглядит следующим образом:

Встречи сегодня

ID встречи: 84218332 Запланированное время: 2019-10-18T01: 00: 00

  • Прибыл

ID встречи: 84218332 Запланированное время: 2019-10-18T22: 05: 00

  • Прибыл
<h1>Appointments today</h1>
    {% for p in appointment %}
        <tr>
            <td>Appointment ID : {{ p.patient }} Scheduled Time: {{p.scheduled_time}}</td>
            <td>
            <form action="{{ p.id }}" method="post">
              {% csrf_token %}
              <input type="hidden" name="appid" value="{{ p.id }}">
              <input type="submit" value="Arrived" class="btn btn-primary">
            </form>
            </td>

          </tr>
    {% endfor %}

Я хочу вызвать другое представление в views.py, нажав кнопку «Прибыл», которая возвращает p.id, который передается в качестве значения для дальнейшего использования его в других целях.

urls.py:

url(r'^appointment/<int:appid>/$', views.arrived, name='arrived')

views.py

def arrived(request, appid):
        if request.method == 'POST':

            print(appid)

ОШИБКА:

Using the URLconf defined in drchrono.urls, Django tried these URL patterns, in this order:

^setup/$ [name='setup']
^welcome/$ [name='welcome']
^appointment/$ [name='appointment']
^appointment/<int:appid>/$ [name='arrived']
^schedule/$ [name='schedule']
^patient_checkin/$ [name='checkin']
^update_info/$ [name='update']
^admin/
^login/(?P<backend>[^/]+)/$ [name='begin']
^complete/(?P<backend>[^/]+)/$ [name='complete']
^disconnect/(?P<backend>[^/]+)/$ [name='disconnect']
^disconnect/(?P<backend>[^/]+)/(?P<association_id>\d+)/$ [name='disconnect_individual']
The current path, appointment/131848814, didn't match any of these.

Как это исправить и что такоеЯ точно пропустил?

РЕДАКТИРОВАТЬ: изменил мой подход. Думаю, это проще.

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Используйте тег шаблона URL .

Изменить:

<form action="{{ p.id }}" method="post">

На:

<form action="{% url 'arrived' p.id %}" method="post">
0 голосов
/ 20 октября 2019

Вы смешиваете старый URL и новый синтаксис пути. Ваш URL должен быть либо:

path('appointment/<int:appid>/', views.arrived, name='arrived')

, либо

url(r'^appointment/(?P<appid>\d+)/$', views.arrived, name='arrived')

Кроме того, как отметил Дипен в своем ответе, вы должны изменить действие формы на {% url 'arrived' p.id %}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...