【问题标题】:Django Form Submission button not workingDjango 表单提交按钮不起作用
【发布时间】: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,那么您必须使用 &lt;form action="differrent url" ...&gt;
  • 只需使用print() 即可查看您在变量中得到了什么以及执行了哪部分代码。 IE。 print( request == "POST" )
  • 不应该是request.method in if request.method == "POST": ?

标签: python html django django-forms


【解决方案1】:

我应该是request.method

if request.method == "POST":

文档:HttpRequest.method

【讨论】:

    【解决方案2】:

    在表单标签中添加action属性以指向所需页面

    <form action=“/home“ method=“POST” ...>
    

    【讨论】:

    • 也试过了。问题是用户我的表单中的数据永远不会保存(餐厅和餐馆老板永远不会保存)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2015-10-10
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多