一 HTML
attrs={'class': 'form-control'} :此种类型的展示为很长的一个输入框
例:在form的定义时,通过widget参数来设置样式
forms.CharField(widget = forms.widgets.Select(attrs={'class': 'form-control'}))
URL反向解析
可以参见 liujiang的博客
https://www.liujiangblog.com/course/django/136
跳转
1、render HttpResponse redirect
导入
from django.http import HttpResponse,JsonResponse
from django.shortcuts import render, redirect
from django.urls import reverse
- HttpResponse 直接返回一个html页(页面上只有传入的字符串)。
from django.http import HttpResponse
def index(request):
return HttpResponse("欢迎访问我的博客")
这个两行的函数首先接受了一个名为 request
的参数,这个 request
就是 django 为我们封装好的 HTTP 请求,它是类 HttpRequest
的一个实例。然后我们便直接返回了一个 HTTP 响应给用户,这个 HTTP 响应也是 django 帮我们封装好的,它是类 HttpResponse
的一个实例,只是我们给它传了一个自定义的字符串参数
- render
from django.shortcuts import render
def index(request):
return render(request, 'blog/index.html', context={
'title':'我的博客首页',
'welcome':'欢迎访问我的博客首页'
})
作用:将数据以字典形式填充到html模板文件中,最后将结果返回给浏览器
render可以接受三个参数:
一个是 request参数
一个是html模板文件
一个是保存具有数据的字典参数。 如:{key:value}形式。
最终使用的还是HttpResponse对象,render函数隐式地完
成了此过程。
- redirect 重定向,跳转到另一个页面
from django.urls import reverse
return redirect(reverse('account:login'))
return redirect('/index/')
2、ajax中跳转
- 重载本界面
window.location.reload(); - 弹出框的父界面 重载
parent.location.reload();
ajax csrf_token的使用
在django中,若是只用ajax,会涉及到csrf_token的使用,将以下代码添加到即可
/* 以下 ajax 获取csrftoken相关 */
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
/* 以上 ajax 获取csrftoken相关 */
前端传到后端的数据
# POST 与 GET
if request.method == 'POST':
tms = request.POST['tms']
if request.method == 'GET':
tms = request.GET['tms']
二 全局变量使用
// .html
// 定义一个全局变量,在具体函数中使用时,前面就不需要再写var了,直接使用即可;
var dir_name=""
var function1 = function()
{
if (dir_name == "")
{
alert("请先创建保存目录");
return false;
}
}
三 前端数据生成JSON格式,传给后端生成JSON文件
//.html
// 创建一个对象
var final = new Object();
// 字符串
final.project_name = $('#project_name').val();
// 数组
final.on_off_times = [$('#open_delay').val(), $('#close_delay').val()]
// JSON化
var finalInfoStr = JSON.stringfy(final);
// ajax传送到后端
$ajax({
url:'{% url 'on_off_test:json_data' %},
method:'GET',
dataType:'json',
data:{'finalInfoStr':finalInfoStr},
success:function(result){
alert('生成成功')},
error:function(){
alert('获取数据失败')}
})
# view.py
def create_json(request):
if request.method == 'GET':
finalInfoStr = request.GET['finalInfoStr']
dir_name = 'D:/开关机'
f = open(dir_name + '/data.json', 'w', encoding='utf-8')
f.write(finalInfoStr)
f.close()
return HttpResponse(1)
else:
pass
值的获取
//select值的获取
var option = $("#select_device option:selected").val()
//input框的获取
var value = $("#project_name").val()
四 基础前端控件
常用控件
<!--数值 -->
<input type="number" id="open_delay" min="0" max="10000" step="1" value="50">
<!--文本输入框 -->
<div class="form-group">
<label for="project_name">项目信息输入</label>
<input type="text" class="form-control" id="project_name" placeholder="输入项目名称(例:HLTE888T)">
</div>
下拉框中的信息列表获取
方法1:Jquery的load函数
// html,加载功能实现
<select id="sel_dep" ></select>
$('#sel_dep').load("{% url 'phone:list_phone_dep' %}");
// views.py
def list_phone_dep(request):
phone_dep = PhoneDep.objects.all()
return render(request, "phone/phone_list_dep.html", locals())
多选框对选中项的操作
var array_test_modules = new Array()
$('#testmodules option:selected').each(function(){
array_test_modules.push($(this).val())
})
if (array_test_modules.length == 0){
//操作
}
单选框常用
// 1、设置value为ok的项选中
$('.selector').val('ok')
// 2、获取当前选中项的value
$('.selector').val()
信息提示
提示框
通过向元素添加 data-toggle = 'tooltip' 创建提示框
<a href='#' data-toggle='tooltip' title='我是提示内容'>鼠标移到我这会有提示</a>
<script>
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip()
})
</script>
五 JQuery
函数
//一、入口函数 jquery
$(document).ready(function (){
//执行代码
})
或者
$(function(){
//执行代码
})
// 二、定义函数
<button onclick='myFunction()'>点我</button>
function myFunction()
{
alter("我被点击了")
}
//三、事件
//点击事件1
$('p').click(function(){
alert('段落被点击了')
})
//点击事件2
$('p').on('click', function(){
alter('段落被点击了')
})
延时执行函数
// 延时2.5秒后执行函数
setTimeout(function(){
location.reload()
},2500)