python - 向 django 发送 POST 请求时未调用视图中的函数
问题描述
我是 Django 的初学者,我正在使用 HTML 表单将输入表单数据存储到数据库中。但是,只要生成请求,就不会调用注册函数。
我的登录表单和注册表单在一个网页中。我的网页包含打开注册表单时的向下滚动动画效果。
这是我的代码:
Login.html(使用 Javascript(jQuery))
<!DOCTYPE html>
<html lang="en">
<head>
<link href="https://cdnjs.cloudflare.com/ajax/libs/holder/2.9.7/holder.min.js" rel = "stylesheet" type="text/css">
<link rel="stylesheet" href="jQuery/slick-1.8.1/slick/slick.css" type="text/css">
<link rel="stylesheet" href="jQuery/slick-1.8.1/slick/slick-theme.css" type="text/css">
<link type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">-->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<!--<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>-->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<meta charset="UTF-8">
<title>Login | Register</title>
</head>
<body>
<script>
$(document).ready(function(){
$('#lgcollapse').collapse('show');
$('#reg-uncollapse').hide();
$('#register-form-opener').click(function(){
$('#lgcollapse').slideUp(500);
setTimeout(function(){
$('#reg-uncollapse').fadeIn(1000);
$('#lgcollapse').hide();
},800);
});
$('#login-opener').click(function(){
$('#lgcollapse').slideDown(500,function(){
$('#reg-uncollapse').hide();
});
/*setTimeout(function(){
$('#lgcollapse').fadeIn(1000);
},800);*/
});
});
</script>
<style>
.nmp{
background: #ffffff;
transition: 1s ease;
box-shadow: 5px 5px 10px #bfc2c4, -5px -5px 10px #ffffff;
}
.nmp:hover{
box-shadow: none;
}
</style>
<body style="background-color: #e9ecef!important;">
<div class = "row my-5" id="lgcollapse" style="background-color: #ffffff!important;box-shadow: inset 5px 5px 18px -2px #000000;margin-right: 0px!important;">
<div class = "container">
<div class = "row">
<div class = "col-md-12">
<div class = "card my-5" style="background-color: #e9ecef!important;">
<div class="card-title text-center">
<div class = "jumbotron-fluid">
<h4 class = "display-4">Login</h4>
</div>
</div>
<div class = "card-body">
<div class = "card-title text-center">
<i class = "fa fa-user-circle fa-5x"></i>
</div>
<form class = "needs-validation" novalidate method="POST">
<div class = "form-group">
<label><h4 class = "text-primary">Username</h4></label>
<input type="text" class = "form-control nmp" id = "usernm" required>
</div>
<div class = "form-group">
<label><h4 class = "text-secondary">Password</h4></label>
<input type="password" class = "form-control nmp" id = "lgpasswd" required>
</div>
<div class = "form-check form-check-inline">
<input type="checkbox" class = "form-check-input ml-auto" id="logged">
<label for = "logged" class="form-check-label ml-auto">Keep Logged in</label>
</div>
<div class = "form-group text-center">
<button class = "btn btn-success"><i class = "fa fa-sign-in fa-lg"></i> Log In</button>
</div>
<div class = "form-group text-center">
<label><a href = "#" class = "lead btn-link" id = "register-form-opener">New User ? Register Here...</a></label>
</div>
<hr class = "clearfix">
<div class = "text-center">
<button class = "btn btn-danger" ><i class = "fa fa-google fa-lg"></i> Sign in with <b>Google</b></button>
<button class = "btn btn-primary" ><i class = "fa fa-facebook fa-lg"></i> Sign in with <b>Facebook</b></button>
</div>
<hr class="clearfix">
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div class = "row my-3 w-100" id="reg-uncollapse">
<div class = "container">
<div class = "row">
<div class = "col-md-12" style="background-color:#e9ecef!important;">
<div class = "card my-5" style="background-color:#e9ecef!important;">
<div class = "card-title text-center">
<div class = "jumbotron-fluid">
<h4 class = "display-4">Register</h4>
</div>
</div>
<hr class = "clearfix">
<div class = "card-body">
<form class = "needs-validation" novalidate method="post" action="login">
{% csrf_token %}
<div class = "form-row">
<div class = "col-md-4 my-auto">
<div class = "card-title text-dark text-center">
<h5>Customer Name</h5>
</div>
</div>
<div class = "col-md-4">
<input type="text" class = "form-control nmp" placeholder="First Name" name = "fname" required>
</div>
<div class = "col-md-4">
<input type="text" class = "form-control nmp" placeholder="Last Name" name = "lname" required>
</div>
</div>
<div class = "form-row mt-4">
<div class = "col-md-4 my-auto">
<div class = "card-title text-dark text-center ">
<h5>E-mail</h5>
</div>
</div>
<!--<div class = "col-md-4">
<input type="text" class = "form-control nmp" placeholder="Username" name="username" required>
</div>-->
<div class = "col-md-8">
<div class = "input-group nmp">
<div class = "input-group-prepend">
<div class = "input-group-text">@</div>
</div>
<input type="email" class = "form-control w-100" placeholder="E-Mail Address" name = "email_domain" required>
</div>
</div>
</div>
<div class = "form-row mt-4">
<div class = "col-md-4 my-auto text-center text-dark">
<h5>Phone</h5>
</div>
<div class = "col-md-8">
<input type="tel" class = "form-control nmp" name="phone" required>
</div>
</div>
<div class = "form-row mt-4">
<div class = "col-md-4 text-center text-dark">
<h5>Shipping Address</h5>
</div>
<div class="col-md-8">
<div class="form-row text-left">
<div class="form-group col-md-4">
<input class="form-control nmp" type="text" placeholder="House No" name = "hno" required>
</div>
<div class="form-group col-md-8">
<input class="form-control nmp" type="text" placeholder="Street Name" name = "street" required>
</div>
<div class="form-group col-md-12">
<input class="form-control nmp" type="text" placeholder="Route" name = "route" required>
</div>
<div class="form-group col-md-6">
<input class="form-control nmp" type="text" placeholder = "City" name = "city" required>
</div>
<div class="form-group col-md-6">
<input class="form-control nmp" type="text" placeholder="State" name = "state" required>
</div>
<div class="form-group col-md-6">
<input class="form-control nmp" type="text" placeholder="ZIP Code" name = "zipc" required>
</div>
<div class="form-group col-md-6">
<input class="form-control nmp" type="text" placeholder = "Country" name = "country" required>
</div>
</div>
</div>
</div>
<div class = "form-row mt-4">
<div class = "col-md-4 text-center text-dark">
<h5>Password</h5>
</div>
<div class = "col-md-8">
<div class = "form-row">
<div class = "col-md-4">
<input type="password" class = "form-control nmp" placeholder="Password" name = "psswd" value="qwerty" required>
</div>
<div class = "col-md-4">
<input type="password" class = "form-control nmp" placeholder="Confirm Password" name = "cpsswd" value="qwerty" required>
</div>
</div>
<label class = "text-danger">Please be stay Alert while creating your password !! You will not be able to reset password if forgotten!!!</label>
</div>
</div>
<hr class = "clearfix">
<div class = "form-row mt-4">
<div class = "card-text text-center col-md-12">
<h5 class = "btn-link text-center"><a href = "#" id = "login-opener" class = "text-center">Already Registred ? Go to Login</a></h5>
<button class = "btn btn-success mt-2" type="submit" id="reged" ><i class = "fa fa-user-plus fa-lg"> Register</i></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<script>
(function() {
'use strict';
window.addEventListener('load', function() {
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
</body>
</html>
网址.py
from django.urls import path
from . import views
urlpatterns = {
path('register', views.register, name="register")
}
视图.py
from django.shortcuts import render,redirect
from django.contrib.auth.models import User,auth
# Create your views here.
def register(request):
if request.method == 'POST':
fname = request.POST['fname']
lname = request.POST['lname']
phone = request.POST['phone']
uname = request.POST['username']
emdmain = request.POST['email_domain']
hno = request.POST['hno']
street = request.POST['street']
route = request.POST['route']
city = request.POST['city']
zipc = request.POST['zipc']
desh = request.POST['country']
psswd = request.POST['psswd']
cpsswd = request.POST['cpsswd']
user = User.objects.create_user(fname = fname,lname = lname,username=uname,email=emdmain,password=psswd)
user.save()
print('user created')
return render(request,"This Function Is Called")
任何帮助将不胜感激,谢谢!!!!
解决方案
为什么不使用 Ajax 调用函数?
XXX 是您要发送的日期和姓名
我在 Login.html 中看不到您调用 register 的位置
$.ajax({
type: "POST",
url: 'register',
data: {
'XXX': XXX,
'csrfmiddlewaretoken': csrftoken
},
success: function (data, textStatus, jqXHR) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
})
推荐阅读
- javascript - Nodemon 不监视 .env 文件
- function - 错误:列xxx引用的值表达式不能在Proc SQL set语句中直接包含汇总函数
- python - Python 3 升级
- java - Vaadin 中按钮的多行字幕不起作用
- javascript - Firebase 功能运行速度极慢
- c++ - 使用静态成员时有关 C++ 中内存分配的问题
- kotlin - Kotlin 扫描器 - 验证 nextLine() 用户输入
- c++ - 如何检查 char 编码是否为 ASCII?
- c# - Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal.NpgsqlOptionsExtension 类型中的方法“get_Info”没有实现
- node.js - 从 Rest API 中的 repo 获取数据