0

我有一个链接到预订页面的旅游页面,我已经对其进行了设置,因此它将旅游号码作为 URL 参数“旅游”发送到预订页面。然后我想在页面上显示旅游标题并将 URL 参数添加到预订表格中,然后将通过电子邮件向我发送参与者详细信息和旅游编号。但是,当我发布表单时,表单输入值“数字”会被重置。如何确保“号码”不会重置?目前,当我发布表单时,我只得到“数字”的 None 值。

tourpage.html

<div class="text-center">
    <a href="/booking/?tour=1" class="btn btn-primary text-center fs-2">Book This Tour Now</a>
</div>

预订.html

    <p class="fs-3">Booking: {{title}}</p>
    
    <main>
        <div class="col-12">
          <form class='contact-form' method='POST' action='/booking/'> {% csrf_token %}
            <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
            
            <input type="hidden" id="number" value={{tournumber}}>
            
            <div class="row g-3">
             
            {% for field in form %}
              {% if forloop.last %}
            <div class="col-12">
              {{ field.label_tag }}
                {{ field }}
                
            {% else %}
            <div class="col-sm-6">
                {{ field.label_tag }}
                {{ field }}
            {% endif %}
            </div>
            {% endfor %}
            
            <button class="w-100 btn btn-primary btn-lg" type="submit">Submit</button>
          </form>
        </div>
          <p>Alternatively you can always reach us on <img src="{% static 'email_image.png' %}" width="300" height="22"></p>
        </div>
    
    </main>
  
    <script>
      //global grecaptcha
      grecaptcha.ready(function() {
        grecaptcha.execute('{{recaptcha_site_key}}', {action: "/booking/"}).then(function(token) {
          document.getElementById('g-recaptcha-response').value = token;
        });
      });
    </script>

视图.py

def booking(request):
    contact_form = CheckoutForm(request.POST or None)

try:
    tour = request.GET['tour']
    
except:
    title = "No tour selected"

#initiate tournumber value
tournumber = 0

    if int(tour) == 1:
        title = "Full Day Tour"
        tournumber = 1
    else:
        title = "No tour selected"


# Enquiry FORM
if request.method == "POST":

    

    if contact_form.is_valid():

        ''' reCAPTCHA validation '''
        recaptcha_response = request.POST.get('g-recaptcha-response')
        data = {
        'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
        'response': recaptcha_response
        }
        r = requests.post('https://www.google.com/recaptcha/api/siteverify', data=data)
        result = r.json()

        #print(result)

        ''' if reCAPTCHA returns True '''
        if result['success']:
            ''' Send email '''

            number = request.POST.get('number')
            first_name = contact_form.cleaned_data['first_name']
            last_name = contact_form.cleaned_data['last_name']
            first_name = first_name.lower().title()
            last_name = last_name.lower().title()
            email = contact_form.cleaned_data['email']
            group_size = contact_form.cleaned_data['group_size']
            country = contact_form.cleaned_data['country']
            travel_dates = contact_form.cleaned_data['travel_dates']
            
            subject = contact_form.cleaned_data['enquiry']

            
            
     
            if request.user.is_authenticated:
                customer = request.user.customer
                customer = customer.name


            else:    
                name = first_name + ' ' + last_name
                customer, created = Customer.objects.get_or_create(email=email,)
                customer.name = name
                customer.save()
            
            #admin email
           #removed sensitive info for stackoverflow
            sendAdminEmail.fail_silently=False
            sendAdminEmail.send()

            #customer email
           #removed sensitive info for stackoverflow
            sentemail.fail_silently=False
            sentemail.send()

            
            
           
        else:
            ''' if reCAPTCHA returns False '''
            messages.error(request, 'Google Captcha error.')
            

    if contact_form.errors:
        errors = contact_form.errors.as_json()
        if request.is_ajax():
            return HttpResponse(errors, status=400, content_type='application/json')


context = {"title": title, "tournumber": tournumber, "form": contact_form, 'recaptcha_site_key':settings.GOOGLE_RECAPTCHA_SITE_KEY}


return render(request, 'booking.html', context)
4

0 回答 0