【问题标题】:Template data not passing into Django view.py模板数据未传递到 Django view.py
【发布时间】:2021-05-24 11:36:51
【问题描述】:

我们正在尝试通过表单中的post方法获取姓名,电子邮件ID和密码,我们得到的数据是none而不是表单中填写的数据。

view.py

from django.http import HttpResponse 
# Create your views here.

def sign_up_in(response):
    email = response.POST.get('eemail')  #Getting the data of email by the name of eemail
    print(email)                         #Trying to print the email that we got from the form
    return render(response, "main/sign_up_in.html",{}) 

HTML 代码

有两种形式,我们试图从第一种形式中获取数据。第一个表单用于创建帐户,第二个表单用于登录。

<form method="POST" class="form" id="a-form" action="">
                    <h2 class="form_title title">Create Account</h2>
                    <div class="form__icons"><img class="form__icon" src="svg_data" alt=""><img class="form__icon" src="svg_data"><img class="form__icon" src="svg_data"></div><span class="form__span">or use email for registration</span>
                    <input class="form__input" type="text" placeholder="Name" name="eemail">
                    <input class="form__input" type="text" placeholder="Email">
                    <input class="form__input" type="password" placeholder="Password">
                    <button class="form__button button submit">SIGN UP</button>
                </form>
<form method="POST" class="form" id="b-form" action="">
                    <h2 class="form_title title">Sign in to Website</h2>
                    <div class="form__icons"><img class="form__icon" src="svg_data" alt=""><img class="form__icon" src="svg_data"><img class="form__icon" src="svg_data"></div><span class="form__span">or use your email account</span>
                    <input class="form__input" type="text" placeholder="Email" name="eemail">
                    <input class="form__input" type="password" placeholder="Password"><a class="form__link">Forgot your password?</a>
                    <button class="form__button button submit">SIGN IN</button>
                </form>

url.py


from . import views
urlpatterns = [
   path("", views.Home, name = "Homes"), 
   path("sign/", views.sign_up_in, name = "sign_up_in") 
]

【问题讨论】:

  • 请注意,您的EmailPassword 字段都没有指定名称,而您的Name 字段的名称设置为eemail。这是故意的吗?您在测试代码时是否意识到这一点?
  • 此表单是否在带有 url sign/ 的页面上?你得到None 作为输出beforeafter 提交表单?无论请求的方法如何,在打印页面时,您肯定会在提交表单之前得到它。
  • 是的,sign/ 是表单的 url。点击提交按钮后,我们正在打印数据,数据显示为 NONE。
  • @KshitijKarkera 你有两张照片是None 还是一张?我相信它应该是一个 None 和其他带有您实际输入的打印件(或者如果您不输入任何内容,则为空字符串,因此为空行)...
  • GwynBleidD 我们只为电子邮件文本字段提供名称以测试请求是否有效

标签: javascript python html css django


【解决方案1】:

**你应该这样做** 写请求而不是响应并检查方法是 GET 还是 POST

def sign_up_in(request):
    if request.method == 'POST':
        email = request.POST.get('eemail') 
        print(email)                         
    return render(request, "main/sign_up_in.html",{}) 

HTML 内部 使用表单(使用路径名称)添加要发布数据的操作,例如:注册

<form method="POST" class="form" id="a-form" action="{% url 'sign_up_in' %}"> #path name
                <h2 class="form_title title">Create Account</h2>
                <div class="form__icons"><img class="form__icon" src="svg_data" alt=""><img class="form__icon" src="svg_data"><img class="form__icon" src="svg_data"></div><span class="form__span">or use email for registration</span>
                <input class="form__input" type="text" placeholder="Email" name="eemail">
                <input class="form__input" type="password" placeholder="Password">
                <button class="form__button button submit">SIGN UP</button>
            </form>

【讨论】:

  • 我试过这个方法,但是提交表单后终端没有显示任何输出
  • 嘿@KshitijKarkera 能否请您将这些代码放在存储库中,以便我可以自己克隆和测试它们..
  • 这是整个项目文件drive.google.com/file/d/15XwPuHm755VAJaqQGOrbr8KF1T5Z23bz/…我们无法将它上传到存储库,所以你可以从驱动器下载它并检查代码
  • 嘿@Nanthankumar J J 你检查我的代码了吗??
  • @KshitijKarkera 它太大了......请只分享必要的东西,还有一件事是你使用 AJAX 来发布这个表格,因为我打赌我的代码可以工作 100 %...您可以通过我的linkedinlinkedin.com/in/mohit-rathore-9299441aa与我联系
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 2020-03-19
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多