Django:01.Django初探

2019-02-26  本文已影响0人  Zzmi

1. Django起源

    Django是一个开放源代码的Web应用框架,由Python写成。Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

2. Django的MTV模型

  1. Model(模型):负责业务对象与数据库的对象(ORM)
  2. Template(模版):负责如何把页面展示给用户
  3. View(视图):负责业务逻辑,并在适当的时候调用Model和Template

3. Django基本命令

3.1. pip下载安装Django(安装当前最新LTS版-->Django官网):

pip3 install django==1.11.20

Django各版本支持时间
3.2. 创建Django项目

django-admin.py startwproject resource

3.3. 在项目中创建应用

python manage.py startapp api

3.4. 启动项目

python manage.py runserver 8000

3.5. 数据库变更操作

python manage.py makemigrations
python manage.py migrate
--当models.py中的类有更改时,这两条命令就能将字段等数据同步变更到数据库中
python manage.py flush
--清空数据库指令,会提示选择是否清空数据库,清空后只留空表

3.5. 创建超级管理员

python manage.py createsuperuser 按提示输入即可,邮箱项可为空
python manage.py changepassword username 修改用户密码

3.6. 项目终端环境

python manage.py shell 进入这个命令里的shell能直接调用models.py中的API,测试操作数据更便捷
python manage.py dbshell 调用setting.py中设置的数据库,会提示输入数据库用户密码

# setting-mysql配置信息:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '项目名',
        'HOST': '数据库地址',
        'PORT': 3306,
        'USER': '用户名',
        "PASSWORD": '密码',
    }
}
3.7. 查看更多命令

python manage.py

3.8. 静态文件配置

静态文件交由Web服务器处理,Django本身不处理静态文件
1、URL请求——>按照Web服务器里面的配置规则先处理(以Nginx为例,主要配置在nginx.conf中的location)
2、——>如果是静态文件,由nginx直接处理
     ——>如果不是,则交由Django处理,其根据urls.py的路由规则进行匹配

# setting-static静态文件配置
STATIC_URL = '/static/'    # 别名
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")    # 实际文件夹名
]

注意点1:
django对引用名和实际名进行映射,引用时只能按照引用名来,不能按实际名去找
<script src="/statics/jquery-3.1.1.js"></script>
------error-----不能直接用,必须用STATIC_URL = '/static/':
<script src="/static/jquery-3.1.1.js"></script>

注意点2:
STATICFILES_DIRS = [("app01",os.path.join(BASE_DIR, "app01/statics")),]
<script src="/static/app01/jquery.js"></script>

# setting-media静态文件配置
MEDIA_URL = "/media/"    # 别名
MEDIA_ROOT = [
    os.path.join(BASE_DIR,"app01","media","upload")    # 可有多个上传位置
]
# 在urls.py中的调用:
from django.views.static import serve
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),

注意点:
如果你定义MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/"),上传的文件就会被保存到c:\temp\media\abc

eg:
class blog(models.Model):
    Title=models.charField(max_length=64)
    Photo=models.ImageField(upload_to="photo")
    """
       上传的图片就上传到c:\temp\media\photo,
       而在模板中要显示该文件,则在这样写在settings里
       设置的MEDIA_ROOT必须是本地路径的绝对路径,
       一般是这样写:
      BASE_DIR= os.path.abspath(os.path.dirname(__file__))
      MEDIA_ROOT=os.path.join(BASE_DIR,'media/').replace('\\','/')
    """

MEDIA_URL是指从浏览器访问时的地址前缀,举个例子:
MEDIA_ROOT=c:\temp\media\photo
MEDIA_URL="/data/"

在开发阶段,media的处理由django处理:
访问http://localhost/data/abc/a.png就是访问c:\temp\media\photo\abc\a.png。在模板里面这样写<img src="/media/abc/a.png">

在部署阶段,最大的不同在于你必须让web服务器来处理media文件,因此你必须在web服务器中配置,以便能让web服务器能访问media文件。以nginx为例,可以在nginx.conf里面配置:

location ~/media/ {
    root/temp/
    break;
}
上一篇下一篇

猜你喜欢

热点阅读