django前后端调用及使用
简单的项目压缩包已放链接,下载下来自己玩吧!!!
为了更方便的查询把django数据库查询进行封装
新建函数XXX.py
# 当前项目的名称: DjangoMyPywelIo
# 新文件的名称: MySql_connection
# 当前用户的登录名: enmonster
# 当前的系统日期: 2024/5/30
# 当前系统时间:08:58
# @Software:PyCharm
# @Time : 2024/5/30 08:58
# 年份:2024
# 月份:05
# 那天:30
# @Author : 彭升军
# @File : MySql_connection.py
from django.db import connection
from django.db.models import F
from django.db.models import Q
# Django ORM 查询,obj为表对象,sql不传查询所有
def ObjOrmAll(obj, kwargs=None):
if kwargs:
print("根据条件查询")
return obj.objects.filter(**kwargs)
else:
print("获取所有对象")
return obj.objects.all()
# Django Raw SQL 查询, 使用自带的sql原生查询
def ObjRaw(obj, sql):
return obj.objects.raw(sql)
# 使用原生SQL执行左连接查询,最原始的
def execute_custom_join(query):
with connection.cursor() as cursor:
cursor.execute(query)
return cursor.fetchall()
# 使用原生SQL执行左连接查询,封装成JSON
def query_one_dict(sql, params=None):
""" 查询一个结果返回字典类型数据
:param sql:
:param params:
:return:
"""
with connection.cursor() as cursor:
if params:
cursor.execute(sql, params=params)
else:
cursor.execute(sql)
col_names = [desc[0] for desc in cursor.description]
row = cursor.fetchone()
tMap = dict(zip(col_names, row))
return tMap
# 使用原生SQL执行左连接查询,封装成JSON,多个返回的是一个列表
def query_all_dict(sql, params=None):
""" 查询所有结果返回字典类型数据
:param sql:
:param params:
:return:
"""
with connection.cursor() as cursor:
if params:
cursor.execute(sql, params=params)
else:
cursor.execute(sql)
col_names = [desc[0] for desc in cursor.description]
row = cursor.fetchall()
rowList = []
for queryList in row:
tMap = dict(zip(col_names, queryList))
rowList.append(tMap)
return rowList
# Django F 表达式 用与计算,没封装采用原生SQL
# def ObjFilter(obj, **args):
# obj.objects.filter(**args).update()
# Django Q 表达式
def ObjFilterQ(obj, **kwargs):
print("Django Q 表达式")
q = Q(**kwargs)
results = obj.objects.filter(q)
return results
- 如何调用
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
import datetime
from .public.MySql_connection import *
from .models import *
def login(request):
return render(request, "login.html")
def index(request):
query = """
SELECT DISTINCT(a.id), a.`name` as Cname,b.`name` as Bname FROM userdb.polls_menu AS a
JOIN polls_menu AS b ON a.id=b.parent_id;
"""
tt = query_all_dict(query)# 引用封装查询语句
context = {"obj": tt, 'title': "首页的title", 'content': "首页的内容"}
return render(request, "index1.html", context)
@csrf_exempt
@require_http_methods(["POST"])
def register(request):
try:
if request.method == 'POST':
name = request.POST.get('UserName')
Pwd = request.POST.get('UserPwd')
UserIPhone = request.POST.get('UserIPhone')
UserEmail = request.POST.get('UserEmail')
print(name, Pwd, UserIPhone, UserEmail)
allIPhone = User.objects.filter(UserIPhone=UserIPhone)
allUserName = User.objects.filter(UserName=name)
if allIPhone or allUserName:
context = {"msg": f" 姓名:{name} 或 {UserIPhone} 手机号 已存在,请换更改信息注册"}
return render(request, "eer.html", context)
else:
my_model = User()
my_model.UserName = name
my_model.UserPwd = Pwd
my_model.UserEmail = UserEmail
my_model.UserIPhone = UserIPhone
my_model.UserGmtCreate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
my_model.UserGmtModify = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
my_model.save()
return render(request, "register.html")
else:
return render(request, "eer.html")
except Exception as e:
contE = {"key": e}
return render(request, "eer.html", contE)
def company(request):
context = {'title': "公司title", 'content': "公司的内容"}
return render(request, 'company_front.html', context)
def school(request):
sql1 = """
SELECT DISTINCT(a.id), a.`name` as Xname FROM userdb.polls_menu AS a WHERE a.parent_id=0;
"""
sql = """
SELECT a.id,b.id, a.`name` as Cname,b.`name` Bname FROM userdb.polls_menu AS a
JOIN polls_menu AS b ON a.id=b.parent_id;
"""
tt = ObjRaw(Menu, sql1)
cc = ObjRaw(Menu, sql)
print(cc)
context = {"obj1": tt, "obj": cc, 'title': "首页的title", 'content': "首页的内容"}
return render(request, 'school_front.html', context)
def index2(request):
# context = {}
query = """
SELECT DISTINCT(a.id), a.`name` as Cname,b.`name` as Bname FROM userdb.polls_menu AS a
JOIN polls_menu AS b ON a.id=b.parent_id;
"""
tt = query_all_dict(query)
print(tt)
context = {"obj": tt, 'title': "首页的title", 'content': "首页的内容"}
return render(request, 'index.html', context)