Передать параметры действия HTML-формы в представление Django - PullRequest
0 голосов
/ 20 сентября 2019

Я делаю приложение, чтобы сэкономить пробег грузовика в каждом штате.Я уже передал необходимые данные для просмотра, а затем подумал изменить свои URL-адреса на более логичные.И после этого я столкнулся с проблемой.Я не знаю, что должно быть вместо «unit.unit_number», и это требуется в моем html-файле, чтобы он работал правильно.Я не нашел ничего, что могло бы объяснить, как с этим бороться.

Если я пытаюсь получить доступ к mywebsite.com/core/units/1/locations/add/, я получаю следующее сообщение об ошибке: «NoReverseMatch at /core / units / 1 / location / add / "

Но если вместо" unit.unit_number "указать только число (например, 1), страница загружается нормально, но я получаю сообщение об ошибке после попыткиопубликуйте данные: «Ошибка TypeError в / core / units / 1 / location / add / _reverse_with_prefix () после * должна быть повторяемой, а не int»

<form action="{% url 'Core:unit_add_location' unit.unit_number %}" method="POST" enctype="multipart/form-data"> 
  {% csrf_token %}
  <div class="container">
    <div class="inner-container border-full">

      <button type="button" class="button button-normal" onclick="AddRow()">Add</button>
      <input type="submit" class="button button-submit" name="count-ifta" value="Save">

      <div class="inner-container border-top-bottom">
        <table id="myTable" name="state-miles-data">
          <thead>
            <th class="text-blue">State</th>
            <th class="text-blue">Miles</th>
          </thead>
        </table>
        <br>
      </div>

    </form>

    <button type="button" class="button button-normal" onclick="AddRow()">Add</button>
  </div>
</div>
def unit_data(request, unit_number):
    return HttpResponse(unit_number)

def unit_add_location(request, unit_number):
    if "GET" == request.method:
        return render(request, 'Core/add_location.html')

    elif "POST" == request.method:

        states_request = request.POST.getlist('states')
        miles_request = request.POST.getlist('miles')

        return HttpResponseRedirect(reverse('Core:unit_data', args=(unit_number)))
urlpatterns = [
    path('units/', views.units_all, name = 'units_all'),
    path('units/<int:unit_number>/', views.unit_data, name = 'unit'),
    path('units/<int:unit_number>/locations/', views.unit_locations, name = 'unit_locations'),

    path('units/<int:unit_number>/locations/add/', views.unit_add_location, name = 'unit_add_location'),
    path('units/<int:unit_number>/locations/<int:report_id>', views.unit_location, name = 'unit_location'),
]

Так чтоЯ хочу сделать, это опубликовать данные и перенаправить на URL "mywebsite.com/units/1/locations/", который обрабатывается представлением "unit_locations"

1 Ответ

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

Ко второй части об итерируемом: (reverse ('Core: unit_data', args = (unit_number))) <<< вы хотите (unit_number,), который является кортежем, а не int.Найди то, это важно. </p>

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