Django POST переменные не создаются

У меня странная проблема, меня попросили изменить форму Django, чтобы включить адрес (просто, я думал), оригинальная html форма собирает данные, имя, контакт и т.д., а затем views.py получает POST переменные, используя sender_name = request.POST.get('sender_name', ''), и т.д.

Адрес_отправителя, который является текстовой областью на HTML-форме, не включен в словарь. Я могу видеть все остальные POST-переменные. Странно то, что если я изменю одну из исходных POST переменных (имя) в HTML форме, например sender_name на sender_name1, она тоже перестает работать и исчезает из словаря.

Я новичок в Django, постепенно начинаю разбираться, есть ли в django способ защитить переменные сессии или я что-то упускаю. Данные формы не хранятся в dB, они отправляются по электронной почте. С представлением также не связан никакой forms.py. Я проверил все записи MIDDLWWARE на всякий случай тоже

Я погуглил проблему, но нашел только материал о сессиях, который не является полезным.

Спасибо.


 <div class="wishlist_form">
    <form method="POST" action="/store/wish-list-request/">{% csrf_token %}
        <table>
            <tr style="vertical-align:top">
                <td>YOUR NAME:</td>
                <td><input type="text" id="sender_name" name="sender_name" class="input" /></td>
            </tr>
            <tr style="vertical-align:top">
                <td>YOUR ADDRESS:</td>
                <td><textarea id="sender_address" name="sender_address" ></textarea></td>
            </tr>
            <tr style="vertical-align:top">
                <td>YOUR EMAIL:</td>
                <td><input type="text" id="sender_email" name="sender_email" class="input" /></td>
            </tr>
            <tr style="vertical-align:top">
                <td>CONTACT NUMBER:</td>
                <td><input type="text" id="sender_number" name="sender_number" class="input" /></td>
            </tr>
            <tr style="vertical-align:top">
                <td>COMMENT:</td>
                <td><textarea id="sender_comment" name="sender_comment"></textarea></td>
            </tr>
            <tr style="vertical-align:top">
                <td>&nbsp;</td>
                <td>
                    <input type="submit" value="submit your wish list &raquo;" class="wishlist_submit_btn">
                    <div id="ResponseDiv"></div>
                </td>
            </tr>
        </table>
        <input type="hidden" name="wishlist_objects" id="wishlist_objects" value="{% for item in list %}{{ item.article }}{% if not forloop.last %}|{% else %}{% endif %}{% endfor %}" />
        <input type="hidden" name="hack" id="hack" value="" />
    </form>
    </div>

@csrf_exempt
def send_wishlist(request):
    hack = request.POST.get('hack', '')
    subject = "Wish List Order From Website"
    sender_email = request.POST.get('sender_email', '')
    sender_name = request.POST.get('sender_name', '')
    sender_address = request.POST.get('sender_address',)
    sender_number = request.POST.get('sender_number', '')
    sender_comment = request.POST.get('sender_comment', '')
    wishlist_objects = request.POST.get('wishlist_objects', '')

    if len(hack) > 0 : #hacker, so fail here
      return HttpResponse('Website notification error of Invalid header found.')

    if subject and sender_email and sender_name and sender_number and wishlist_objects:
        message = "Hi admin,\nNew Wish List Order From Website\n\n"
        message += "Customer Name: "  + sender_name + "\n";
        message += "Customer Address: " + sender_address + "\n";
        message += "Customer Email: "  + sender_email + "\n";
        message += "Customer Number: "  + sender_number + "\n\n";
        message += "Customer Comment:\n"  + sender_comment + "\n\n";
        message += "--------------------------------------------\n\n";

        try:
            sender="noreply@xxxx.xxx"
            recipients=['xxx@xxxx.xxxx']
            list = wishlist_objects.split('|')
            for item in list:
                message += "Article Number: "  + item + "\n";
                message += "\n";
                message += "--------------------------------------------";
                message += "\n\n";

            send_mail(subject, message, sender, recipients, fail_silently=False, auth_user=None,
auth_password=None)
            return HttpResponseRedirect('/store/wishlist/thanks/')
        except BadHeaderError:
            return HttpResponse('Sending mail failed because' + BadHeaderError)
    else:
        return HttpResponse('Invalid details provided - please go back and re-enter.' )

Предполагается, что проблема с "HTML" страницей или если вы используете JavaScript. Вы можете приложить код для пояснения

Благодаря @JanMalte за то, что подтолкнул меня в правильном направлении, это наконец-то решено!!! Был base.js, в котором вызывалась функция loadstoreinfo(), которая записывала POST данные.

Вернуться на верх