【发布时间】:2020-08-21 04:36:39
【问题描述】:
所以,我正在关注如何创建类似于 Ubereats 应用程序的 code4startup 教程。现在,我正在尝试将新的餐厅和餐厅所有者注册到数据库中。我正在使用 Django 的表单来处理所有数据字段。
在我点击“注册”按钮之前一切正常。我的代码应该将表单中的所有数据发布到数据库中,然后自动登录新创建的餐厅老板到餐厅页面。但是,当我按下注册按钮时,没有任何反应,而是重新加载了注册页面。
我该如何解决这个问题?我正在关注的教程是从 2017 年开始的,我认为作者使用的 django 版本很旧。
以下是我的代码中的一些 sn-ps:
注册 HTML(仅限按钮,表单可以正常工作):
<form method="POST" enctype="multipart/form-data" >
{% csrf_token %}
{{ user_form }}
{{ restaurant_form }}
<button type="submit">Sign Up</button>
VIEWS.py
def restaurant_home(request):
return render(request, 'restaurant/home.html', {})
def restaurant_sign_up(request):
user_form = UserForm()
restaurant_form = RestaurantForm()
#when submitting data:
if request == "POST":
user_form = UserForm(request.POST)
restaurant_form = RestaurantForm(request.POST, request.FILES)
if user_form.is_valid() and restaurant_form.is_valid():
new_user = User.objects.create_user(**user_form.cleaned_data)
new_restaurant = restaurant_form.save(commit=False)
new_restaurant.user = new_user
new_restaurant.save()
login(request, authenticate(
username = user.form.cleaned_data["username"],
password = user.form.cleaned_data["password"]
))
return redirect(restaurant_home)
return render(request, 'restaurant/sign_up.html', {
"user_form": user_form,
"restaurant_form": restaurant_form
})
【问题讨论】:
-
通常它会将表单发送到同一个 url - 如果您想将表单发送到不同的 url,那么您必须使用
<form action="differrent url" ...> -
只需使用
print()即可查看您在变量中得到了什么以及执行了哪部分代码。 IE。print( request == "POST" ) -
不应该是
request.methodinif request.method == "POST":?
标签: python html django django-forms