mobile:$inpRegMobile.val(),
"captcha_1":$inpRegCaptcha.val(),
"captcha_0":$('#id_captcha_0').val(),
2. 手机号,图片验证码,forms.py代码
from django import forms
from django.forms import fields
from captcha.fields import CaptchaField
class DynamicLoginForm(forms.Form):
mobile = fields.CharField( # 手机号
label="手机号",
max_length=11,
min_length=11,
required=True,
error_messages={
"max_length": "手机号长度必须为11位",
"min_length": "手机号长度必须为11位",
"required": "密码不能为空",
captcha = CaptchaField()
3. views.py代码
from django.conf import settings
from django.http import JsonResponse
from django.views.generic.base import View
from apps.users.forms import LoginForm, DynamicLoginForm
from apps.utils.YunPian import send_single_sms
from apps.utils.random_str import generate_random
class SendSmsView(View):
def post(self, request):
send_sms_form = DynamicLoginForm(request.POST)
re_dict = {}
if send_sms_form.is_valid():
mobile = send_sms_form.cleaned_data["mobile"]
# 随机生成数字验证码
captcha = generate_random(6, 0)
res_json = send_single_sms(apikey=settings.API_KEY, code=captcha, mobile=mobile)
if res_json["code"] == "0":
re_dict["status"] = "success"
else:
re_dict["msg"] = res_json["msg"]
else:
for key, value in send_sms_form.errors.items():
re_dict[key] = value[0]
print(re_dict)
return JsonResponse(re_dict)
4. 生成随机字符串,random_str.py代码
import string
from random import choice
def generate_random(random_length, type):
随机字符串生成函数
:param random_length:字符串长度
:param type:字符串类型(0:纯数字 or 1:数字+字符 or 2:数字+字符+特殊字符)
:return:生成的随机字符串
# 随机字符串种子
if type == 0:
random_seed = string.digits
elif type == 1:
random_seed = string.digits + string.ascii_letters
elif type == 2:
random_seed = string.digits + string.ascii_letters + string.punctuation
random_str = []
while (len(random_str) < random_length):
random_str.append(choice(random_seed))
return ''.join(random_str)
if __name__ == "__main__":
print(generate_random(6, 0))
4. 云片网发送短信,YunPian.py代码
import requests
import json
def send_single_sms(apikey, code, mobile):
# 发送单条短信
url = "https://sms.yunpian.com/v2/sms/single_send.json"
text = "【后端学习】您的验证码是{}。如非本人操作,请忽略本短信".format(code)
res = requests.post(url, data={
"apikey": apikey,
"mobile": mobile,
"text": text
# 将json数据转为python中的字典
res_json = json.loads(res.text)
return res_json
6. 发送短信验证码urls.py代码
from django.urls import path
from . import views
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
path("send_sms/", csrf_exempt(views.SendSmsView.as_view()), name="send_sms"), # 发送验证码
1. ajax代码$.ajax({ cache: false, type: 'post', dataType:'json', url:"/users/send_sms/", data:{ mobile:$inpRegMobile.val(), "captcha_1":$inpRegCaptcha.val(), "captcha_0":$('#id_captcha_0').val(), }2. 手机号,图
需求:点击datatable 的一行diaoyon数据,显示一个模态框,模态框显示该行的全部属性
解决方法: 点击datatable 这一行后,首先构造一个模态框 而后利用
ajax 将行的某个属性传回后台 后台d调用数据库将属性全部查询后 用json 形式
发送给前台 前台的模态框进行渲染:
实现步骤:
1、构建一个模态框:具体
使用方法可以在网上找:https://www.w3h5.com/post/74.html
创建模态框(Modal)
开始演示模态框
1. 在项目中前后端数据相互是一种常态, 前后端交互使用的是ajax请求和form表单的请求两种方式"
ajax与form表单的区别在于: form 是整个页面刷新提交的, 但是ajax 是局部提交 局部验证的, 这个是他们的唯一区别
2. 前端ajax请求方式:
$.ajax({
url: '/ajax/', # 请求路径
type: 'post...
一、流程分析:
1.用户在项目前端,输入手机号,然后点击【获取验证码】,将手机号发到post到后台。
2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商向该手机号,发送该验证码,如果没通过验证,则返回错误信息
3.用户收到短信验证码以后,再次将所有信息post到后台。
4.后台验证各个数据,通过验证则完成实名制认证,如果没通过则返回错误信息。
总结,一次实名验证,需要两次ajax+post
二、对接短信商:
1.在云片网端:
1.注册云片网
地址:https://www.yunpian.com/
后台管理控制台页面:其中最重要的信息是APIKEY
1、获取XMLHttpRequest对象。(根据浏览器的不同,获取的对象的方式也不同。主要在IE和非IE的区别)
2、通过open方法准备向服务器
发送请求。至少需要传递三个函数:
第一个参数:意思是以什么方式传递(GET方式还是POST方式)。
第二个参数:意思是请求的url地址。如果是servl
1. 图片路径错误:请确保图片路径是正确的。可以在浏览器中尝试直接访问图片路径,看看是否能够正常显示。
2. STATIC_URL 和 STATIC_ROOT 配置错误:在 settings.py 文件中,要确保 STATIC_URL 和 STATIC_ROOT 配置正确。STATIC_URL 应该指向静态文件的 URL 路径,STATIC_ROOT 应该指向静态文件在服务器上的绝对路径。
3. 没有在模板中添加静态文件加载代码:在需要加载图片的模板中,需要使用 {% load static %} 加载静态文件,然后使用 {% static '路径' %} 获取图片的 URL。
4. 没有在 urls.py 文件中配置静态文件路径:需要在项目的 urls.py 文件中,添加如下代码:
```python
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... 其他 URL 配置 ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
以上是一些可能导致 Django 项目中无法加载图片的原因和解决方法。希望能够帮到你。