博客基础_django_python从入门到实践_创建项目_创建应用

创建项目

  制定规范

    创建一简单博客网页,有固定分类,每个分类下又可以添加具体博客条目,每个条目保留作者,发布时间。

 

  创建虚拟环境

    虚拟环境是系统的一个位置,可以在其中安装包,与其他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
View Code

 

创建应用

  定义模型

    模型告诉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] + '...'

# 迁移模型/ 注册模型
View Code
# 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()
View Code

 

posted @ 2018-10-16 21:09  phappiness  阅读(354)  评论(0编辑  收藏  举报