Django学习简易版
准备工作
-
下载Django框架,注意:全部命令在管理员窗口执行
pip install django==2.2.* # 2.2版本是稳定版的 * 代表这个版本最新的
-
创建框架,在第一步中有
-
启动项目
python manage.py runserver # 默认是8080端口 ,本地连接 python mangee.py runserver 8080 # 改端口 python manage.py runserver 0.0.0.0:8000 # 远程连接,如果不成功,根据自己的django版本去官方文档找。
-
启动成功在浏览器中打开
Run 'python manage.py migrate' to apply them. February 25, 2022 - 11:36:52 Django version 2.2.8, using settings 'mydemo.settings' Starting development server at http://127.0.0.1:8000/ # 用这个url在浏览中打开 Quit the server with CTRL-BREAK.
第一步创建框架
-
创建项目框架,随便找个目录,打开管理员窗口,在你找到目录在输入。
django-admin startpoject myweb(项目名)
-
创建app 可以多个创建,进入myweb目录下,输入
python manage.py startapp myapp(app名)
-
创建前端html页,手动 创建 在myweb下创建 templates/myapp目录,html写在myapp下,实在templates/myapp,而不是你创建的app下。
第二步环境配置
- 找到项目下settings.py 文件
- 修改ALLOWED_HOSTS=[’*’],让任意都能访问
- 添加自己的应用在INSTALLED_APPS中加入’myapp’,
- 在TEMPLATES中DIRS中修改[os.path.join(BAST_DIR,‘templates’)] ,html前端,用于解析url需要
数据库链接
- 配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mytest',#选择数据库的名,请确认你的mysql中有这个库
'USER': 'root',
'PASSWORD': '1234',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
2.在app中models.py中放映射数文档
这里要下载mysqlclient 模块
例子:
from django.db import models
from datetime import datetime
# Create your models here.
class Users(models.Model):
#id = models.AutoField(primary_key=True) #主键可省略不写
name = models.CharField(max_length=32)
age = models.IntegerField(default=20)
phone = models.CharField(max_length=16)
addtime=models.DateTimeField(default=datetime.now)
class Meta:
db_table = "表名" # 指定表名,如果不写默认是app名_Users类名
-
生成迁移文件 python manage.py makemigrations
-
生成表 **python manage.py migrate myapp(app名) 注意:如果不写app名,INSTALLED_APPS里对应的都会创建表,djamgo_migrations app表 **
测试
-
配置子路由,找到项目中urls.py脚本
from django.contrib import admin from django.urls import path,include #导入include urlpatterns = [ # path('admin/', admin.site.urls), path('', include('myapp.urls')),# 指向子路径,这里的urls需要自己手动在myapp下创建。 ]
-
再在自己手动创建的urls中修改
from django.urls import path from . import views # 导入视图层 urlpatterns = [ path('',views.index,name='index') # '' 默认为空url头部为空,views.index 视图层下·对应的函数, name='index' 反向解析需要。 ]
-
在wiews中写index函数
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("首页")
-
在浏览器中测试
数据库简单增删改查操纵
增加
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Users # 导入Users类
# Create your views here.
def index(request):
# 增加
ob = Users()
ob.name = '张珊'
ob.age = 20
ob.phone = '135423234'
ob.save() # 保存
#删除操作
# mod = Users.objects #获取users的model对象
# user = mod.get(id=6) #获取id值为6的数据信息
# print(user.name)
# user.delete() #执行删除操作
#修改操作
# ob = Users.objects.get(id=7)
# #print(ob.name)
# ob.name = "小刘"
# ob.age = 26
# ob.save()
#数据查询
mod = Users.objects #获取Users模型的Model操作对象
#ulist = mod.all() #获取所有数据
#ulist = mod.filter(name='小刘') #获取name值为小刘的信息
#ulist = mod.filter(age__gt=20) #获取所有age大于20的信息
#ulist = mod.filter(age__gte=20) #获取所有age大于等于20的信息
#ulist = mod.filter(age__lte=20) #获取所有age小于等于20的信息
#ulist = mod.order_by("age") #按age升序排序
ulist = mod.order_by("age")[:3] #按age升序排序,只获取前3条
for u in ulist:
print(u.id,u.name,u.age,u.phone,u.addtime)
# 去浏览器刷新一下就行。
# 再看终端(管理员窗口)有没有没错,数据库有数据就没错,就不截图了
return HttpResponse("首页")