1、环境搭建[非正式,一点小集锦]
1、python+django+django rest framework安装
--自行搜索,记住版本匹配
--python3.6 django3.0
--pip install djangorestframework -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simp
le/
--pip install django-filter markdown
2、使用django rest framework
--一套基于django开发的框架
3、手动创建pycharm--django基础模板框架
--django-admin startproject MxShop
--cd MxShop
--python manage.py startapp users
--创建templates文件夹
4、刷新mysql密码
--net stop mysql
--mysqld --console --skip-grant-tables --shared-memory
--重开一个cmd,输入mysql -u root -p,点击enter两次
--use mysql
--update user set authentication_string='' where user='root'; 密码置为空
--quit
--关闭mysqld --console --skip-grant-tables --shared-memory窗口
--net start mysql
--ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '111111';
--quit
--mysql -u root -p
--111111即可
5、mysql配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mxshop', # 数据库名称
'USER': 'root', # 用户名
'PASSWORD': '111111', # 密码
'HOST': 'localhost', # 主机
'PORT': '3306', # 端口
'OPTIONS': { 'init_command': 'SET storage_engine=INNODB;' } # 设置引擎驱动
}}
06、新建数据库navicat/sqlyog可视化创建即可
--创建数据库mxshop 选择utf8字符集 数据库排序规则utf8-genaral-ci
2、正式创建,项目初步建立
--设置 python 镜像
--pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
--pip3 install django 安装django
--使用django创建项目,django-admin startproject django_test01
--如果创建中没有找到django-admin命令,可以使用 find / aname django-admin.py 找到文件位置
--python3 路径/django-admin.py startproject django_test01 创建
--chmod 777 * 赋予所有文件读写权限,每个子文件夹也要这么做,不知道有没有快捷方式像 -r之类,没去试。有兴趣的可以自己试一下。在博客下面说一下谢谢!
--启动的时候python重新安装
--https://www.cnblogs.com/lemon-feng/p/11208435.html
--sqlite版本太低重新安装
--https://blog.csdn.net/weixin_43336281/article/details/100055435
--这里建议降低django版本,适应sqlite3
--设置setting.py中 ALLOWED_HOSTS = ['*'] // 意为所有ip都可以访问
--python3 manage.py runserver 0.0.0.0:ip //启动项目
3、创建子app
--python3 manage.py runserver 0.0.0.0:9000
--设置文件夹下所有文件包括子目录的权限为777
--chmod -R 777 *
--python manage.py startapp login python manage.py startapp book python manage.py startapp pay 创建三个子应用
--settings.py中配置文件:
--ALLOWED_HOSTS = ['*'] 所有ip都可访问
--添加INSTALLED_APPS,添加方式按照包的导入方式来做的:
'pay.apps.PayConfig',
'login,apps.LoginConfig',
'book.apps.BookConfig'
[注]:子应用名.apps.子应用名Config
--注解一下:每个应用下 apps.py 中一个单独的类一个名字的存在意义是方便引用
from django.apps import AppConfig
class LoginConfig(AppConfig):
name = 'login'
4、模型
创建模型之前,进入数据库,本机密码 就是自己的姓名拼音
--orm 框架:就是和数据库的表一一对应的,事先写好的API,优点如下:
--不需要使用原生的数据库操作语句,节省了时间
--对于不同的数据库不需要重新编辑sql语句,直接由orm自己解决了
--创建一个数据库:
--create database book_01 charset utf8;
--create table t_book(
id int primary key,
name varchar(20)
)charset utf8;
--数据库配置 settings.py [不配置也没问题,会使用默认的sqlite3数据库]
--models.py中创建对应model,记住一个model类一张表,book的models.py中加入如下代码:
from django.db import models
# Create your models here.
class BookInfo(models.Model):
"""
1、主键id自动生成
2、属性和models保持一致
"""
name = models.CharField(max_length=20)
class PeopleInfo(models.Model):
name = models.CharField(max_length=20)
gender = models.BooleanField()
book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)
--模型迁移 model migrate
--生成迁移文件
python manage.py makemigrations
--生成数据表
python manage.py migrate
5、admin功能玩儿一下
--该功能就好比曹操的鸡肋一样,玩玩儿就算了
--设置settings.py文件中 LANGUAGE_CODE = 'zh-Hans' 使用汉语
--TIME_ZONE = 'Asia/Shanghai' 时区 默认格林尼治 改为上海
--python manage.pt runserver 0.0.0.0:9000
--访问 http://ip:port/admin ipconfig
--创建超级使用者:
--python manage.py createsuperuser 再设置 用户名[admin] 邮箱 密码[1234abc] 即可
--再次运行登录
--子应用的 admin.py文件 是和admin应用相关联的,这里注册一个类来做示例
from django.contrib import admin
from book.models import BookInfo
# Register your models here.
admin.site.register(BookInfo)
[注]:这样就可以直接再admin中操作网页了
6、视图的定义
--views.py文件中定义的一个函数,暂且没有配置url
from django.shortcuts import render
from django.http import HttpResponse, HttpRequest
# Create your views here.
def index(request):
return HttpResponse('liming')
--试图说明如下:
--导入from django.http import HttpResponse, HttpRequest
--request 是HttpRequest的实例对象,叫什么名字不重要
--视图函数必须有返回,所以导入HttpResponse,但其实还有很多各种各样的response响应
7、url匹配
--上面定义了一个视图函数index,没有配置url,所以需要在urls.py文件中配置url
--在settings.py文件中加配置:APPEND_SLASH = True 表示默认在url结尾加上 /
--整个项目url入口,在settings.py文件中配置,具体如下:
ROOT_URLCONF = 'python_django_heima_5.urls' 说明http是从这里配置进入寻找对应地址url,一般不修改
--第一种方式:url 总 urls.py中配置如下
# 这里 导入文件时需要 include('book.urls') 使用include包住导入的urls,py文件,但是导入视图函数时就是直接 index 即可
from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
import book.urls
urlpatterns = [
path('admin/', admin.site.urls),
url(r'', include('book.urls')),
]
book.urls.py中配置如下:book.vies.py 有一个事先定义好的视图函数 index
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from book.views import index
urlpatterns = [
url(r'index', index)
]
--第二种:path
8、模板
--不同于前后端分离的项目,模板就是存放所有前端文件,每次请求会返回一次性打包好的 html js css
--前后端分离的优势:
--前后端商议好接口之后,分别独立开发,效率高
--前端加载在前端服务器,和后端只有接口数据交互,后端不必要打包html js css返回给前端,后端压力减小
--将数据接口 和 后端返回的打包资源接口分开,使得项目逻辑更加清晰
--template的使用:
--新建template文件夹,创建index.html文件
--配置settings.py中模板参数:其实就是一个模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'template')], # base_dir + 模板名称
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
--render返回打包好的 html js css jpg等资源,代码示例如下:
return render(request, 'index.html') # 默认在配置好的template中寻找文件
--render说明如下:
render(request, template_source, context)
--request:视图函数中的 request
--template_source:一般为打包的视图文件
--context:传递的参数
--代码示例如下:
def index(request):
# return HttpResponse('book')
name = 'limign'
context = {
'name': name
}
return render(request, 'index.html', context=context)
在index.html中使用{{ name }}即可接收参数