创建项目
制定规范
创建一简单博客网页,有固定分类,每个分类下又可以添加具体博客条目,每个条目保留作者,发布时间。
创建虚拟环境
虚拟环境是系统的一个位置,可以在其中安装包,与其他python包隔离。
限于版本问题,python -m venv ll_env 可能不管用,需先安装virtualenv包,分pip 和 apt-get两种。
创建指定python版本下的虚拟环境
激活虚拟环境
windows / linux
deactivate
创建项目
虚拟环境下安装django包
创建项目
注意项目最后有个点
这个点可以让项目使用合适的目录结构,方便后续服务器的部署,如果忘记,请删除ll_env后,重新创建
多了项目文件夹和manage.py
manage.py作用是接受命令并交给django相应的部分执行,例如开启服务器,迁移数据等
创建数据库
多了db.sqlite3. sqlite是一种使用单个文件的数据库,是编写简单应用程序的理想选择,因为不用太关注数据库管理的问题。
查看项目
localhost是一种处理当前系统发出的请求,而不允许其他人查看你开发的服务器。
如果出现指定端口被占用的问题,可遍历8001至高,发现合适的端口。
mkdir learning_log python -m venv ll_env # if errors because of versions, establish virtualenv pip install --user virtualenv # Ubuntu: sudo apt-get install python-virtualenv virtualenv ll_env --python=python3 source ll_env/bin/activate # ll_env/Scripts/activate # deactivate pip install Django django-admin.py startproject learning_log . ls ls learning_log python manage.py migrate ls python manage.py runserver # python manage.py runserver 8001 # click localhost:8000, if worked, then establish apps
创建应用
定义模型
模型告诉Django如何处理应用程序中存储的数据,如赋值变量,返回类别信息
字段更多用法 https://docs.djangoproject.com//en/1.8/ref/models/fields/
__str__返回显示在导航栏
激活模型
告诉django哪些应用安装在项目中
创建要迁移的表单,以符合models.py中数据的定义
迁移数据
django 管理网站
较为轻松地管理网站,查看所有用户信息
散列值 存储在网站数据库中密码信息为散列值,反推回密码,在网站配置合理的情况下,极难
django自动的在管理网站中添加了一些模型,如User,Group,对于我们添加模型需要手工进行注册
django shell
获取所有实例对象
遍历对象
查询特定实例对象的属性
查询特定实例对象所属对象的所有数据
更多 https://docs.djangoproject.com/en/2.1/intro/tutorial02/
# 创建应用 python manage.py startapp learning_logs ls learning_logs/ # admin.py __inti__.py migrations models.py test.py views.py vim learning_logs/models.py # 定义模型 #models.py from django.db import models class Topic(models.Model): text = models.CharField(max_length=200) date_added = models.DateTimeField(add_now_add=True) def __str__(self): return self.text # 激活模型 # settings.py INSTALLED_APPS{ snip 'learning_logs' } python manage.py makemigrations learning_logs python manage.py migrate # 管理网站 # 创建超级用户 python manage.py createsuperuser username: ll_admin email password: password: #注册Topic模型 from django.contrib import admin admin.site.register(Topic) #验证并添加Topic localhost:8000/admin usrname + password Topic/ add # 定义Entry模型 from django.db import models.py class Topic(models.Model): snip class Entry(models.Model): topic = models.ForeignKey(Topic) text = models.TextField() date_added = models.TimeDateField(auto_now_add = True) class Meta: verbose_name_plural = 'Entries' def __str__(self): return self.text[:50] + '...' # 迁移模型/ 注册模型
# django shell python manage.py shell from learning_logs.models import Topic # 获取模型Topic的所有实例 Topic.objects.all() # 遍历查询集 topics = Topic.objects.all() for topic in topics: print(topic.id, topic) # 查看某一实际例子及其属性 t = Topic.objects.get(id = 1) t.text t.data_added # 查看与主题相关联的条目 t.entry_set.all()