一、虚拟环境
1、建立虚拟环境
python -m venv xxcdu
2、激活虚拟环境 windows:
xxcdu/Scripts/activate
linux:
source xxcdu/bin/activate
3、停止使用虚拟环境:
deactive
二、Django创建项目
1、创建项目:
Django-admin startproject learning_log .
learning_log目录下的文件:urls.py:创建哪些页面来响应请求,wsgi.py(web服务器网关接口)帮助Django提供他创建的文件
2、创建数据库:
python manage.py migrate
3、启动server:
python manage.py runserver
(若指定端口被占用,执行python manage.py runserver 8001(换端口))
4、创建、激活程序:
(1)创建应用程序·
python manage.py startapp learning_logs
learning_logs目录下文件:admin.py apps.py migrations models.py:定义模型 tests.py views.py
(2)在models.py中定义模型;
(3)在learning_log/settings中添加程序“learning_logs”(添加到默认应用程序上方)
(4)让Django修改数据库以存储新模型相关信息:
python manage.py makemigrations learning_logs
(5)迁移数据库 :
python manage.py migrate
(6) 修改网站管理数据三个步骤:修改models.py; 对learning_logs调用makemigrations; 让Django迁移数据库。
5、Django管理网站:
创建超级用户:
python manage.py createsuperuser
6、向管理网站注册模型:
from .models import Topic
admin .site.register(Topic)
7、通过外键将条目与主题关联:(Entry指条目,Topic指主题,on_delete = models.CASCAD指绑定的二者级联删除)
class Entry(models.Model):
topic = models.ForeignKey(Topic, on_delete = models.CASCAD)
8、
Django shell:python manage.py shell
.all()函数获取该模型所有实例:topics = Topic.objects.all( ) 返回一个查询集的列表。
9、Django创建页面:定义URL、编写视图、编写模版。
定义URL将浏览器请求与URL匹配,每个URL被映射到特定视图,视图函数通过模版来渲染页面。
(1)映射URL:
1、在learning_log目录下的urls.py中添加整个项目中应用程序的URL。 2、添加模块admin.site.urls,定义可在管理网站请求的所有URL :
path('admin/', admin.site.urls)
3、添加应用learning_logs的URL:
path('', include('learning_logs.urls'))
4、在应用learning_logs 中添加urls.py,添加应用中文件的path:
path(' ' , views.index, name='index')#该对象看作一个URL模式
path( )函数三个参数:第一个参数是字符串path(’ ‘在本地即https://localhost:8000/);第二个参数指定要调用views.py中的哪一个函数,此处是views.py中的index;第三个是为该URL指定名称“index”便于引用。
(2)编写视图:
在应用learning_logs中的views.py编写index函数,在index函数中调用render函数使用模版渲染。 def index(request):#request为Django从服务器接收到的request对象 return render(request, ’learning_logs/index.html’)
(3)编写模版:
编写learning_logs/index.html 1、编写父模版base.html,与index.html置于同一目录下:通过“[a href="[% url ’learning_logs:index’ %]"]learning log[/a]”,由于名为index的URL模式定义在urls.py中,可确保链接是最新的编写父模块块标签“ 【% block content %】【% endblock content %】”(content为模块名) 2、编写子模块index.html:首句必须包括”【% extends “learning_logs/base.html” %】”以指定继承于哪个父模块。编写子模块块标签。
(4)显示Topics中特定主题topic的详细页面,URL模式:
path(’topics/【int:topic_id】/’, vies.topic, name = ’topic’) ,(例如http://localhost:8000/topicd/1)编写视图函数、模版(‘{’与’<‘符号用’【‘代替)