Python学习(四)后端开发框架django
常见python web开发框架:
web.py
Django
Pylons
Tornado
Bottle
django菜鸟教程
一、django项目创建与启动
1.安装django pip install django==1.10.1pip list查看是否安装成功2.新建django项目 进入某个文件夹,CMD命令:django-admin startproject pythonDemo2测试:在该文件夹下生成一个pythonDemo2的文件夹3.运行项目 命令行方式:在django项目目录(有manage.py文件的那个目录),命令 python manage.py runserver 0.0.0.0:8000按钮方式(debug模式)1.edit configuration,点击+号,选择python2.script path选择manage.py文件,parameters填写 runserver,点击apply,ok3.debug按钮运行项目测试:浏览器http://127.0.0.1:8000/ 访问项目http://127.0.0.1:8000/admin 访问管理工具 账号密码用命令创建 python manage.py createsuperuser root root4.创建应用(一个项目包含多个应用,可以理解为模块功能)还是在有manage.py文件的那个目录 python manage.py startapp dy测试:多个dy的文件夹
二、接口创建返回内容
返回json数据
1.路由文件定义请求路径 urls.pyurlpatterns = [path('admin/', admin.site.urls),path('', HomePage.get_html),path('user/find', User.find),path('user/add', User.add),re_path(r'^user/deleteById/(.+)$', User.delete),path('user/update', User.update),]2.dy应用文件夹找到User.py,添加如下函数from django.core import serializersfrom django.http import HttpResponse from dy.models import *def find(request):method = request.methodif method == 'GET':user__model_list = UserModel.objects.all()json_data = serializers.serialize('json', user__model_list)return HttpResponse(json_data, content_type="application/json")def add(request):method = request.methodif method == "POST":# 获取数据json_str = request.bodyjson_dict = json.loads(json_str)title = json_dict.get("title")content = json_dict.get("content")# 封装成modeluser_model = UserModel(title=title, content=content)# 保存user_model.save()# 返回json_data = user_model.to_json()return HttpResponse(json_data, content_type="application/json")def delete(request, user_id):method = request.methodif method == "DELETE":user = UserModel.objects.get(id=user_id)result = user.delete()return HttpResponse(result, content_type="application/json")def update(request):method = request.methodif method == "POST":# 获取数据json_str = request.bodyjson_dict = json.loads(json_str)id = json_dict.get("id")title = json_dict.get("title")content = json_dict.get("content")# 更新user_model = UserModel.objects.filter(id=id)update_count = UserModel.objects.filter(id=id).update(title=title, content=content)return HttpResponse(update_count, content_type="application/json")UserModel单个对象转成json数据:1.models.py文件里面Claass UserModel添加to_json方法import jsondef to_json(self): return json.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))2.业务层 UserModel调用to_json()方法user_model = UserModel(title='职位1', content='内容1')user_model.save()json_data = user_model.to_json()return HttpResponse(json_data, content_type="application/json")UserModel集合转成json数据:from django.core import serializersdef find(request):user__model_list = UserModel.objects.all()json_data = serializers.serialize('json', user__model_list)return HttpResponse(json_data, content_type="application/json")
返回html文件
1.路由文件定义请求路径 urls.pyfrom django.contrib import adminfrom django.urls import path from dy import viewsurlpatterns = [path('admin/', admin.site.urls),path('', views.get_html),path('getUser', views.get_user)]2.dy应用文件夹找到views.py,添加如下函数from django.http import HttpResponsefrom django.shortcuts import renderimport jsondef get_html(request):return render(request,'test.html')3.在templates目录创建test.html页面要先创建html文件的目录templates并配置这个目录步骤1创建目录:应用dy目录下添加包templates步骤2配置目录:项目配置文件settings.py添加应用名称和模板INSTALLED_APPS = [,'dy']TEMPLATES = [{'DIRS': ['templates'],},]
三、路由 分发/参数传递/POST
1.路由分发,每个app有自己的路由文件
见菜鸟教程
2.参数传递
from django.urls import path
from django.urls import re_path
from dy.function import Userurlpatterns = [ re_path(r'^user/deleteById/(.+)$', User.delete), #路径里面传递参数 user/deleteById/14path('user/find', User.find), #问号后面的参数和body里面的参数在这边都没体现
]获取参数1.路径里面的参数def delete(request, param1): #路径里面的参数值获取user = UserModel.objects.get(id=param1)result = user.delete()return HttpResponse(result, content_type="application/json")2.问号后面的参数def find(request): #问号后面的参数值获取title = request.GET.get('title') #不管是get还是post,问号后面的参数值都这样获取content = request.GET.get('content')user__model_list = UserModel.objects.all()json_data = serializers.serialize('json', user__model_list)return HttpResponse(json_data, content_type="application/json")3.body里面的数据def add(request):# 获取数据json_str = request.bodyjson_dict = json.loads(json_str)title = json_dict.get("title")content = json_dict.get("content")# 封装成modeluser_model = UserModel(title=title, content=content)
3. post delete方法
1.默认只支持get,如果要支持POST DELETE等其他,settings文件里面MIDDLEWARE注释掉CsrfViewMiddlewareMIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]2.url知道的函数里面根据request.method判断做处理def find(request):method = request.methodif method == 'GET':user__model_list = UserModel.objects.all()json_data = serializers.serialize('json', user__model_list)return HttpResponse(json_data, content_type="application/json")else:return HttpResponse(method, content_type="application/json")
四、mysql数据库操作
1.配置数据库信息
项目文件夹pythonDemo2下settings.py文件
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 引擎用mysql'NAME': 'conventional-station', # 数据库里面的一个库'HOST': '10.10.4.129','PORT': '3306''USER': 'root','PASSWORD': '6287@fjyf.com'}
}如果改了数据库引擎启动报错提示:ModuleNotFoundError: No module named 'MySQLdb'a.安装mysql驱动模块:pip install PyMySQLb.项目文件夹pythonDemo2下的__init__.py文件添加如下内容import pymysqlpymysql.install_as_MySQLdb()
2.声明表的字段信息
应用文件夹dy下models.py文件class UserModel(models.Model): # 创建数据库和对数据的增删改查操作,创建出来的表名是 应用名_类名:dy_user# 声明表的字段id = models.AutoField(primary_key=True)title = models.CharField(max_length=100, null=False)content = models.TextField(null=False)link = models.CharFieldclass DeptModel(models.Model): # 创建数据库和对数据的增删改查操作,创建出来的表名是 应用名_类名:dy_user# 声明表的字段id = models.AutoField(primary_key=True)title = models.CharField(max_length=100, null=False)content = models.TextField(null=False)link = models.CharField(null=True, max_length=100)测试:在dy目录下生成文件夹migrations文件夹
3.创建映射文件 python manage.py makemigrations dy
python manage.py makemigrations dy #dy为应用名称,需要在settings.py文件定义过
测试:刷新,在dy目录下就会出现migrations文件夹INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dy']
4.创建表 python manage.py migrate
python manage.py migrate
测试:数据库中创建了多个表和自己定义的user表和dept表
5.表数据操作
更多model的增删改查操作查阅菜鸟教程
from django.core import serializers
from django.http import HttpResponsefrom dy.models import *def find(request):user__model_list = UserModel.objects.all()json_data = serializers.serialize('json', user__model_list)return HttpResponse(json_data, content_type="application/json")def add(request):user_model = UserModel(title='职位1', content='内容1')user_model.save()json_data = user_model.to_json()return HttpResponse(json_data, content_type="application/json")def delete(request):# 删除id=1的数据user = UserModel.objects.get(id=12)result = user.delete()return HttpResponse(result, content_type="application/json")def update(request):update_count = UserModel.objects.filter(id=12).update(title='职位12')return HttpResponse(update_count, content_type="application/json")
Python学习(四)后端开发框架django相关推荐
- python学习第八天---用Django框架创建可重用注册登录系统
python学习第八天---用Django框架创建可重用注册登录系统 实现的功能 项目开始前的整体规划 搭建环境完成基础配置 创建app 更改语言和时区 数据库表生成 启动开发服务器 浏览器访问,检测 ...
- python学习四(处理数据)
python学习四(处理数据) head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-3 ...
- python学习第6天---django框架---模型类及数据库操作
python学习第6天---django框架---模型类及数据库操作 目录 文章目录 1.字段与选项 2.查询函数 3.查询集 4.模型类之间的关系 4.1.对应关系 4.2.关联查询 5.模型管理器 ...
- 基于 Python 的开源Web开发框架django/哈工大学生成绩管理系统html实现/python结课大作业
python结课大作业 (一)django安装 (1)django是什么 (2)基于django的网站 (3)django的设计理念 (4)django安装 (二)数据库安装 (1)数据库(DataB ...
- (零基础)入门python学习四步骤,附上Python全栈学习路线大刚!
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...
- Python web后端开发框架 Django 、Flask、Tornado
由于Python的简洁 易读 强大 高效 现在Python应用在文件处理.网络编程.数据库编程.游戏.Web开发.数据分析.机器学习等各个领域. 就Web开发而言,为了提高开发效率,应运而生了很多框 ...
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- python学习四十四天(前端之HTML标签)
今日主要内容: web标准 浏览器内核 HTML介绍,规范,结构详解 字体标签 排版标签 超链接 图片标签 列表标签 <ul>.<ol>.<dl> 表格标签 < ...
- Python学习四: 连接数据库 与 数据清理
连接数据库 准备工作 楼主这里用的一个轻量级关系型数据库,MySQL (这里楼主安装MySQL的时候遇到了一个小问题,没有兼容服务器,根据这个帖子可以解决这个问题 分享 | 安装 mysql 报错 ...
最新文章
- ArrayList 为什么要实现 RandomAccess 接口?
- Python 200个标准库汇总
- linux怎么进入root文件,linux下安装ROOT过程
- Python天天美味(5) - ljust rjust center
- Android SurfaceView 的应用
- JavaScript高级程序设计学习(四)之引用类型(续)
- ZooKeeper学习总结(1)——ZooKeeper入门介绍
- “四大设计原则”在排版中的应用
- RMQ----不更新点
- Android历史与版本变迁
- hprose-php教程,Swoole学习笔记(六):Hprose入门
- c#调用microsoft word将word另存为pdf
- java 刽子手游戏_刽子手游戏(Hangman Judge)
- 珠宝行业电子秤串口程序开发
- 华三防火墙web端口_华三防火墙开放端口 华三防火墙怎么登录
- 倍福beckhoff详细知识库展示
- BMS(电池管理系统)第五课 ——核心!!!SOH算法开发
- ChatGPT:微软人工智能Office和电邮即将登场...
- 现在学校应用较多的计算机学籍管理系统,计算机基础知识选择题500个
- 在实验室服务器平台怎么用上jupyter notebook?并进入虚拟环境