Python学习(四)后端开发框架django

常见python web开发框架:
web.py
Django
Pylons
Tornado
Bottle

django菜鸟教程

一、django项目创建与启动

1.安装django     pip install django==1.10.1
   pip 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,点击+号,选择python
    		2.script path选择manage.py文件,parameters填写 runserver,点击apply,ok
    		3.debug按钮运行项目
    		
	测试:浏览器http://127.0.0.1:8000/ 访问项目
	       http://127.0.0.1:8000/admin 访问管理工具  
	        账号密码用命令创建 python manage.py createsuperuser 
	         root  root
	         
    
    		
4.创建应用(一个项目包含多个应用,可以理解为模块功能)
	还是在有manage.py文件的那个目录 python manage.py startapp dy
	测试:多个dy的文件夹

在这里插入图片描述

二、接口创建返回内容

返回json数据

1.路由文件定义请求路径  urls.py

	urlpatterns = [
	    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 serializers
	from django.http import HttpResponse	
	from dy.models import *
	
	
	def find(request):
	    method = request.method
	    if 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.method
	    if method == "POST":
	        # 获取数据
	        json_str = request.body
	        json_dict = json.loads(json_str)
	        title = json_dict.get("title")
	        content = json_dict.get("content")
	        # 封装成model
	        user_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.method
	    if method == "DELETE":
	        user = UserModel.objects.get(id=user_id)
	        result = user.delete()
	        return HttpResponse(result, content_type="application/json")
	
	
	def update(request):
	    method = request.method
	    if method == "POST":
	        # 获取数据
	        json_str = request.body
	        json_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 json
		def 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 serializers
	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")

返回html文件

1.路由文件定义请求路径  urls.py
 	from django.contrib import admin
	from django.urls import path	
	from dy import views
	
	urlpatterns = [
	    path('admin/', admin.site.urls),
	    path('', views.get_html),
	    path('getUser', views.get_user)
	]

2.dy应用文件夹找到views.py,添加如下函数
	from django.http import HttpResponse
	from django.shortcuts import render
	import json

	def 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 User

urlpatterns = [   
    re_path(r'^user/deleteById/(.+)$', User.delete),  #路径里面传递参数  user/deleteById/14
    path('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.body
        json_dict = json.loads(json_str)
        title = json_dict.get("title")
        content = json_dict.get("content")
        # 封装成model
        user_model = UserModel(title=title, content=content)
3. post delete方法
1.默认只支持get,如果要支持POST DELETE等其他,settings文件里面MIDDLEWARE注释掉CsrfViewMiddleware
	MIDDLEWARE = [
	    '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.method
	    if 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 PyMySQL
   b.项目文件夹pythonDemo2下的__init__.py文件添加如下内容
   		import pymysql
		pymysql.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.CharField


class 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 HttpResponse

from 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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值