Django:电子商务地址结帐表单没有打印请求.POST数据在终端



我在视图中创建了一个带有print(request.POST)语句的ModelForm。当我单击表单上的提交按钮时,我在终端中看不到任何数据,在管理中也看不到保存的数据。此外,我得到重定向到登录页面天气登录上没有。有人能解释一下我做错了什么吗?我该如何看待这种错误呢?

提前感谢SO社区

form.py

class AddressForm(forms.ModelForm):
class Meta:
model = Address
fields = [
#'billing_profile',
#'address_type',
'address_line_1',
'address_line_2',
'city',
'state',
'country',
'postal_code'
]

views.py

from django.shortcuts import redirect
from django.utils.http import is_safe_url
from .forms import AddressForm
def checkout_address_create_view(request):
form = AddressForm(request.POST or None)
context = {
"form": form
}
next_ = request.GET.get('next')
next_post = request.POST.get('next')
redirect_path = next_ or next_post or None
if form.is_valid():
print(request.POST)
if is_safe_url(redirect_path, request.get_host()):
return redirect(redirect_path)
else:
return redirect("cart:checkout")        
return redirect("cart:checkout")   

form.html(地址)

<form method="POST" action='{% if action_url %}{{ action_url }}{% else %}{% url "login" %}{% endif %}'> {% csrf_token %}
{% if next_url %}
<input type='hidden' name='next' value='{{ next_url }}'/>
{% endif %}
{% if billing_profile %}
<input type='hidden' name='billing_profile' value='{{ billing_profile }}'/>
{% endif %}
{% if address_type %}
<input type='hidden' name='address_type' value='{{ address_type }}'/>
{% endif %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary my-2 btn-1">Submit</button>
</form>

form.html(账户)

<form method="POST"> <input type="hidden" name="csrfmiddlewaretoken" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
<tr><th><label for="id_username">Username:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="username" class="form-control formiful" placeholder="Enter username" required id="id_username"></td></tr>
<tr><th><label for="id_password">Password:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password" class="form-control formiful" placeholder="Enter password" required id="id_password"></td></tr>
<button type="submit" class="btn btn-primary my-2">Log In</button>
</form>

checkout.html

{% if not billing_profile %}
<div class='container containerful mt-3 text-center'>
<div class='row py-1'>
<div class='col-12 col-md-6 member'>
<p class='lead'>Login</p>
<div class='checkout-member'>
{% include 'accounts/snippets/form.html' with form=login_form next_url=request.build_absolute_uri %}
</div>
</div>
<div class='col-12 col-md-6 guest'>
<p class='lead'> Continue as guest</p>
<div class='checkout-guest'>
{% url 'guest_register' as guest_register_url %}
{% include 'accounts/snippets/form.html' with form=guest_form next_url=request.build_absolute_uri action_url=guest_register_url %}
</div>
</div>
</div>
</div>
{% else %}
{% if not object.shipping_address %}
<div class='container containerful mt-3'>
<div class='row py-1'>
<div class='col-md-6 mx-auto col-10'>
<p class='lead'>Shipping Address</p>
<hr/>
{% url 'checkout_address_create' as checkout_address_create %}
{% include 'addresses/form.html' with form=address_form next_url=request.build_absolute_uri action_url=checkout_address_create address_type='shipping' %}
</div>
</div>
</div>
{% else %}
<div class='container containerful mt-3'>
<div class='row py-1'>
<div class='conveyor-belt text-center col-7 ms-5 me-4 my-2'>
<!--conveyor-->
{% include 'carts/contain/check_conveyor.html'%}
</div>
<div class='fillip-counter text-center col-3 ms-5 my-2 position-relative' >
<!--fillip-->
{% include 'carts/contain/check_fillip.html'%}
</div>
</div>
</div>
{% endif %}
{% endif %}

url.py

urlpatterns = [
path('admin/', admin.site.urls),
path('login-page/', login_page, name='login'),
path('register-page/guest/', guest_register_view, name='guest_register'),
path('logout-page/', LogoutView.as_view(), name='logout'),
path('cart/', include('carts.urls', namespace='cart')),
re_path(r'^checkout/address/create/$', checkout_address_create_view, name='checkout_address_create_view'),    
path('register-page/', register_page, name='register'),
path('home/', anchor_page, name='home'),
path('inventory/', include('inventory.urls')),
path('featured/', include('inventory.featured-urls')),
path('search/', include('search.urls',namespace='search')),
path('whats-new-renu/', blog_RENU, name='blog'),
path('about-renu/', about_RENU, name='about'),
path('contact-renu/', contact_RENU, name='contact'),
]

我发现这个问题实际上是在我的url.py文件的名称参数是" checkout_address_create_view "和我的action_url的名称是checkout_address_create在我的checkout.html {% if %}语句是冲突的。checkout.html

(更正如下)

{% if not billing_profile %}
<div class='container containerful mt-3 text-center'>
<div class='row py-1'>
<div class='col-12 col-md-6 member'>
<p class='lead'>Login</p>
<div class='checkout-member'>
{% include 'accounts/snippets/form.html' with form=login_form next_url=request.build_absolute_uri %}
</div>
</div>
<div class='col-12 col-md-6 guest'>
<p class='lead'> Continue as guest</p>
<div class='checkout-guest'>
{% url 'guest_register' as guest_register_url %}
{% include 'accounts/snippets/form.html' with form=guest_form next_url=request.build_absolute_uri action_url=guest_register_url %}
</div>
</div>
</div>
</div>
{% else %}
{% if not object.shipping_address %}
<div class='container containerful mt-3'>
<div class='row py-1'>
<div class='col-md-6 mx-auto col-10'>
<p class='lead'>Shipping Address</p>
<hr/>
{% url 'checkout_address_create' as checkout_address_create %}
{% include 'addresses/form.html' with form=address_form next_url=request.build_absolute_uri action_url=checkout_address_create address_type='shipping' %}
</div>
</div>
</div>
{% else %}
<div class='container containerful mt-3'>
<div class='row py-1'>
<div class='conveyor-belt text-center col-7 ms-5 me-4 my-2'>
<!--conveyor-->
{% include 'carts/contain/check_conveyor.html'%}
</div>
<div class='fillip-counter text-center col-3 ms-5 my-2 position-relative' >
<!--fillip-->
{% include 'carts/contain/check_fillip.html'%}
</div>
</div>
</div>
{% endif %}
{% endif %}

url.py

urlpatterns = [
path('admin/', admin.site.urls),
path('login-page/', login_page, name='login'),
path('register-page/guest/', guest_register_view, name='guest_register'),
path('logout-page/', LogoutView.as_view(), name='logout'),
path('cart/', include('carts.urls', namespace='cart')),
re_path(r'^checkout/address/create/$', checkout_address_create_view, name='checkout_address_create'),    
path('register-page/', register_page, name='register'),
path('home/', anchor_page, name='home'),
path('inventory/', include('inventory.urls')),
path('featured/', include('inventory.featured-urls')),
path('search/', include('search.urls',namespace='search')),
path('whats-new-renu/', blog_RENU, name='blog'),
path('about-renu/', about_RENU, name='about'),
path('contact-renu/', contact_RENU, name='contact'),
]