我正在創建一個表單,如果我們注冊它,如果表單有效,它應該將資料保存到資料庫中。否則,它應該引發一個錯誤,但它不會將資料保存到資料庫中,并且還需要一些欄位,但如果我提交表單,它甚至不會引發錯誤欄位是必需的。但是如果我在 Django 管理面板上手動注冊它,它就可以正常作業。
這是我的模型:
class foodlancer(models.Model):
Your_Name = models.CharField(max_length=50)
Kitchen_Name = models.CharField(max_length=50)
Email_Address = models.EmailField(max_length=50)
Street_Address = models.CharField(max_length=50)
City = models.CharField(max_length=5)
phone = PhoneNumberField(null=False, blank=False, unique=True)
def __str__(self):
return f'{self.Your_Name}'
另外,我禁用了 html5 驗證
表格.py
class FoodlancerRegistration(forms.ModelForm):
phone = forms.CharField(widget=PhoneNumberPrefixWidget(initial="US"))
class Meta:
model = foodlancer
fields = "__all__"
視圖.py:
def apply_foodlancer(request):
form = FoodlancerRegistration()
return render(request, 'appy_foodlancer.html', {"form": form})
最后是 Django 模板
<form method="POST" novalidate>
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="cta-btn cta-btn-primary">Submit</button>
</form>
感謝您的時間/幫助
uj5u.com熱心網友回復:
您的視圖中沒有任何表單保存邏輯。嘗試這樣的事情:
def apply_foodlancer(request):
if request.method == 'POST':
form = FoodlancerRegistration(data=request.POST)
if form.is_valid(): # if it's not valid, error messages are shown in the form
form.save()
# redirect to some successpage or so
return HttpResponse("<h1>Success!</h1>")
else:
# make sure to present a new form when called with GET
form = FoodlancerRegistration()
return render(request, 'appy_foodlancer.html', {"form": form})
還要檢查 HTML 檔案中表單的方法是否為post. 我不確定是否POST也有效。避免使用__all__. 正如檔案中所寫,它的安全性較低
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/378553.html
