Джанго две формы на одной странице - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть две формы на одной странице.

  1. Первая форма использует стороннюю библиотеку lib для загрузки файла в s3, а затем предварительно просматривает только что загруженный файл без изменения состояния / перехода в другоестр.
  2. Вторая форма будет сохранять URL загруженного файла в моей модели

Однако, когда я отправляю вторую форму - первая форма выдает ошибку.Об отсутствии обязательного поля (он считает, что должен отправить другой файл).

HTML

<form 
    id="s3form"
    name="s3form"
    action="{% url 'file_create' employee.uid %}" 
    method="post"
>
    {% csrf_token %}
    {{ form }}
</form>

<hr/>

<form 
    id="save-pic"
    name="save-pic"
    action="{% url 'employee_update_profile_pic' employee.uid %}"
    method="post"
>
    {% csrf_token %}
    {# jquery inserts hidden input for image link after s3 upload #}
    <input 
        id="save-pic-submit"
        name="save-pic-submit"
        type="submit"
        value="Save"
    >
</form>

enter image description here

ОБНОВЛЕНИЕ:

urls.py

  path('employee/update/<str:uid>/profile-picture', views.file_create, name='file_create'),
  path('employee/update/<str:uid>/profile-picture', views.employee_update_profile_pic, name='employee_update_profile_pic'),

views.py

  def file_create(request, uid):
      employee = Employee.nodes.get(uid=uid)
      form = S3UploadForm(request.POST or None)

      # this is not getting run... maybe because form intercepted by package?
      if form.is_valid():
          form.save()
          messages.success(request, '''Successfully uploaded new profile pic! Lookin' good''')
      return redirect("employee_detail", employee.uid)

      return render(request, 'profile-picture.html', {'form': form, 'employee': employee})




def employee_update_profile_pic (request):
    pdb.set_trace()

РЕШЕНО: это произошло потому, что они использовали один и тот же URL, несмотря на то, что оба были 'post'

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