学习视频:https://www.bilibili.com/video/av18586413
https://www.bilibili.com/video/av18589369?t=509&p=2
这个视频是Django1.x的,和2.0有点区别,但是差别不大
创建django项目:
指定路径
django-admin startproject 项目名称
目录解读:
第一个mysite------------------这是总的项目文件夹
mysite--------------
__init__.py-----空文件夹,仅用来声明当前的mysite文件夹为一个模块,有了这个就可以
在其他文件导入该文件夹下的文件,如import mysite import
settings
settings.py-----项目的配置文件
urls.py---------总的路由声明
wsgi.py---------和web服务(如apache,nginx)配合使用的配置文件
manage.py-----------和创建好的项目进行交互的一个命令行管理工具
创建了一个APP之后,要记得把它写到INSTALLED_APPS中
开启项目:
进入到项目的路径
python manage.py runserver
开启的是一个本地测试服务器,压力负载很小
settings:(不用自带数据库,改用mysql)
DATABASES:
'ENGINE':'django.db.backends.mysql',
'USER':用户名
'PASSWORD':密码
'HOST':数据库主机地址
'PORT':数据库访问端口
admin:
django项目提供的一个后台数据库管理界面
数据库生成命令:
makemigrations:执行检查数据库差异,生成迁移文件
migrate:根据迁移文件生成对应的SQL语句,更新数据库
django默认自带了一些数据库内容
创建后台管理界面的超级用户:
python manage.py createsuperuser
时区和语言设置:(setting.py中)
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
创建app:blog
创建APP:
执行python manage.py blog
目录下多了一个文件夹
blog --------------APP文件名
__init__.py--------声明当前文件夹是一个模块,可以在别的地方import这个文件夹的文件
admin.py-------- 该APP的数据库如果希望被后台看到,需要在这个文件下进行注册
models.py----------创建该APP下可能使用到的数据库
tests.py------------实现某些测试驱动
views.py-----------实现对应功能的函数,django页面你在访问的时候,其实都是在访问这个
视图函数,调用里面的具体函数实现相应功能
创建了一个APP之后,要记得把它写到setting.py文件的INSTALLED_APPS中
这样django才能使用到这个app中的数据库
输出hello world
视图函数:
HttpResponse:该函数给用户返回一个html字符串
写完了视图函数一定要记得给它配置路由url
配置路由:
--总路由找到APP
--APP路由找到视图函数
--视图函数显示页面
但是还是不能访问到index这个页面,因为还需要配置路由
1、在blog目录里面新建一个urls文件
2、在总文件夹中添加子文件夹blog的路由地址
一、在首页(127.0.0.1:8000)显示hello world
修改总文件夹mysite下的总路由文件urls.py
修改子APP--blog下面的urls.py
修子APP--blog的视图函数views.py
浏览器打开:localhost:8000
显示hello world
2、在其他地址(比如:127.0.0.1:8000/blog/index)显示hello world
首页显示不了
地址变成了:blog/index
再试
说明地址:
如果URL为空,默认首页显示
如果随便填,则为 首页+主文件夹mysite的urls.py设置的地址+子APP文件夹blog的urls.py设置的地址
以上是返回了一个简单的字符串hello world,那么如何用views返回HTML页面??
创建一个名为templates的文件夹保存相关的html页面
在settings:
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
通过render函数,可以返回一个html页面
结果显示果然返回了index这个html文件
那如果要显示 今天天气不行呢??
当然一种方法就是改前端页面index.html了,将里面的‘’今天天气还行‘’改为‘’今天天气不行‘’
这样肯定不方便,有没有一种只改后端,不用管前端的方法?
这里就要用到变量了
HTML页面动态生成内容:
HTML写模板变量, {{ today }}
render函数返回一个模板变量的字典,key只是变量的名字,value是对应的内容
具体如下:
只需要该views.py里面的函数即可,不用去动前端页面了
这就实现了前后端的分离,只需要在后端改数据就可以实现前端的不同内容
如何加载图片到网页
blog新建一个文件夹static,放置静态资源(如图片,音频等等)
然后在settings.py里面将路径添加一下
tips:不用默认端口8000