Django 常用配置

Django 安装

    pipx install django
    • x 为python解释器版本2 or 3
    • 如果你想安装指定版本的django,使用pip install django=1.11.8

python manage.py 不加任何其他参数时,返回命令列表,类似help

项目

创建一个Django项目

  • 终端输入

    django-admin startproject 项目名称
 
# 初始文件结构
mysite
|
|--mysite
| |
| |--__init__.py
| |--settings.py
| |--urls.py
| |--wsgi.py
|
|
|
|--manage.py

manage.py

  1. 可以看作Django项目的工具,通过它来调用Django shell和数据库

    • 比如"操作数据库(在数据库中生成表)","启动项目","创建应用"等
  2. 启动文件,寻找其他模块的路径开始位置

    • 通过manage.py启动之后,python解释器将其所在路径添加进模块与包的搜索路径(sys.modules)
    • 此时,在其他文件中导入项目下的模块如下
      • 在app中的views.py导入mysite下的urls
      • from mysite import urls
      • 在manage.py中导入mysite下的urls
      • from mysite import urls

settings.py

  • 项目的默认配置。

    • 数据库信息
    • 时区
    • 调式模式
    • 安装的应用
    • 各种路径
      • HTML模板文件夹路径
      • 静态文件路径

urls.py

  • 简单来说,urls.py的作用其实就是实现了url路径与视图函数的映射关系
  • 路由,将请求对象request中封装的的url地址映射到具体的视图处理函数或者下一个路由(url分发)

应用

一个项目下可以有多个应用,比如微信有聊天应用、朋友圈应用等

  • 进入mysite项目文件夹下

    python manage.py startapp 应用名
# 此时文件夹结构
mysite/
|
|--mysite/
| |
| |--__init__.py
| |--settings.py
| |--urls.py
| |--wsgi.py
|
|--app/
| |-- migrations/
| | |-- __init__.py
| |--admin.py
| |--apps.py
| |--models.py
| |--tests.py
| |--views.py
|
|-- templates/
|
|
|
|--manage.py

启动Django项目

  • pythonx manage.py runserver IP:PORT
    • x 是python版本
    • PORT默认8000
    • IP为0.0.0.0的时候,服务器会监听机器上所有IP端口,这意味这我们在其他电脑上通过服务器IP以及对应端口就可以访问服务器url对应的资源

配置时区

  • Web项目中,不可避免的要使用的到时间,通常Django默认的配置是UTC时间,因此我们需要手动的将配置文件中的时区配置修改一下下。
  方法一: 修改"TIME_ZONE"
    • 配置TIME_ZONE = 'Asia/Shanghai'(配置时要注意时区的大小写昂,做项目要把细节掌控到位,否则后期BUG有你受的)
  方法二: 修改"USE_TZ"
    • 如果觉得上面拼写容易出错,可以使用这个方法
    • 直接设置配置USE_TZ = False即可

为URL配置APPEND_SLASH参数

  • Django会默认给URL路径末尾添加一个/再去urls.py中去匹配,如果我们url指向的是一个文件,比如http://127.0.0.1:8080/index.html,默认情况下,Dajngo会帮我们处理成http://127.0.0.1:8080/index.html\这显然是不合理的。
  • 设置APPEND_SLASH=False就可以避免Django自动为url添加斜线。这同时也意味着我们在urls.py中配置路径映射的时候,一定要有一个规范,这样才能在开发中避开容易掉进的坑。
  • 现在给自己的url.py映射中路径定义一个规范
    1. 路径必须以^开始,以$结束

      • 不加结束符时,r'^/jesi/'可以匹配r'ziawang/xxxxxxxxxx/asdasd'
    2. 路径指向文件时,不在结尾添加/
      • r'^jesi/index.html$'
    3. 路径不指向文件时,应在路径末尾添加/
      • r'^jesi/index/$'
    4. 所有HTML、视图函数及其他文件中,路径必须和urls.py中定义的路径一样,有/的必须加上/,否则会找不到网页

引入静态文件

在应用下直接创建static目录

  • 当启动一个Django项目时,程序会在项目的模块搜索路径下搜索(应用所在目录以及应用的下一级目录)名称为static的目录,并将检索的目录作为以后检索静态文件的检索路径。     因此,在我们开发一个应用组件的时候,要保证组件的普遍适用性,我们要尽量将组件会使用到的静态文件保存在组件应用目录下的"static目录下,采用这种方式我们不需要修改"settings.py"配置文件的任何配置"

    • templates目录和static检索的原理相同,我们也可以直接在应用目录下创建一个templates目录用来存放应用专属的模板文件,不需要修改配置文件的任何配置

配置STATICFILES_DIRS

static只用来存放服务端使用到的静态文件,对于用户上传的文件(头像等)应该使用media,在Web开发中,用户上传的文件应该存放在服务器上

  • 配置文件内容如下
STATIC_URL='/static/'

STATICFILES_DIRS = [
# static为项目路径下你存放静态文件的文件夹的实际路径
os.path.join(BASE_DIR, 'static', 'css')
]
  • os.path.join(BASEDIR, 'static', 'css')是静态文件存放的实际路径,STATIC_URL='/static/'中的/static/是这个路径的别名。两者是一个映射关系,如果要使用该静态文件,   那么静态文件的URL中的"实际路径部分"就要使用别名来代替比如,要引入css文件.

    • <link rel="stylesheet" href="/static/teststatic.css">

      • href中的/static/映射的实际路径是/static/css/teststatic.css
    • 如果使用<link rel="stylesheet" href="/static/css/teststatic.css">服务端就会响应一个404错误
  • 配置好static之后,开启服务器,我们直接在浏览器栏中输入静态文件的路径就可以访问静态文件。这是因为配置完static之后,django会将static对应路径下的静态文件配置到路由中,而不需要我们手动添加,保证在其他HTML文件中可以正常引用静态文件

127.0.0.1:8000/static/teststatic.css

使用 {% load staticfiles %}

  • 在前端模板页面中我们可以使用{% load staticfiles %}的方式来引入static中的静态文件
  • css/js文件中,应该这样写
    • <link rel="stylesheet" href="{% static '/css/room_table.css' %}">
      {% load staticfiles %}
      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css">
      <link rel="stylesheet" href="{% static 'css/room_table.css' %}">
      </head>

关于static目录

  • 在开发组件的过程中,由于组件需要满足大多数场景下的使用,这个时候,组件中使用到的静态文件就不能放在项目的根目录下,而是应该放在组件应用路径下
  • 注意
    • 1. 组件静态文件的配置不能修改Django项目的settings.py中static的配置,因为那样会降低组件的普遍适用性,否则使用该组件的用户会常常疲于配置组件的静态文件配置
    • 2. 组件静态文件要创建在组件应用的目录下,这样可以增加可移植性

配置应用

添加

  • 在INSTALLED_APPS中将应用的名称添加上,这种方式在旧版本上比较常见,因为旧版本中没有apps.py文件
  INSTALLED_APPS = [
  'django.contrib.admin',
   'django.contrib.auth',
  'django.contrib.contenttypes',
   'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'myapp',
  ]
  • 在INSTALLED_APPS中将应用下apps.py文件中的AppConfig类传入

    • apps.py文件源码如下
  from django.apps import AppConfig

  class AppConfig(AppConfig):
   name = 'rbac' # 应用名
  INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'rbac.apps.AppConfig',
  ]

查看Django全局配置

  • Django的全局配置存放在django.conf下的global_settings文件中,要想查看该配置文件中的内容,可以先导入该文件,在pycharm中使用ctrl + 鼠标左键点击即可
  from django.conf import global_settings

后台运行Django

  • 在公司一般都是使用Nginx反向解析配合uwsgi来搭建服务端运行环境。

    • uwsgi直接运行Django程序不会加载静态文件,不过Nginx反向代理uwsgi监控接口可以实现动静分离,实现对静态文件的支持
  • 当然,如果你有自己的服务器比如vps,就可以自己搭建上述环境,如果你觉的麻烦,并且仅仅是为了测试,你可以这样

    • nohup python3 manage.py runserver 0.0.0.0:80 &

WSGI协议

  在了解WSGI协议之前我们有必要区分一下Web服务器与Web应用程序

  Web服务器

    •   Web服务器用来处理客户端请求,并且将请求转发给Web应用,严格上来讲,Web服务器只能用来处理HTTP请求和响应信息,并且只能向用户发送静态页面的内容,对于动态页面的内容,幼通过CGI、FastCGI等接口交给Web程序去处理
    •   常见的Web服务器报货Nginx、Apache等

  Web应用程序

    •   Web应用程序一般也支持HTTP协议,用来处理业务逻辑,比如我们的python开发中常用的Django、Flask框架

  为什么要有WSGI协议

    •   对于每一个Web应用程序来说,都需要有一个Web服务器与其进行通信,如果Web应用程序与Web服务器之间的协议(你可以理解为沟通的语言)是不同的,那么Web服务器与Web应用程序之间就无法沟通,导致无法处理客户端的请求。                                 一次你,就像HTTP协议一样,python定义了一个python的Web服务器与Web框架之间沟通的通用协议,这就是WSGI。有了WSGI,Web框架就可以与任意一个实现了WSGI协议的Web服务器进行联系并处理客户端请求了。

  使用uwsgi替代Django、Flask自带服务器

    •   为了开发方便,Django和Flask都内置了Web服务器,在正式生产环境中,我们要用其他Web服务器替换内置的服务器。

最全的Django入门及常用配置的更多相关文章

  1. IntelliJ IDEA入门之常用配置以及问题解决(持续更新中)

    软件版本: IntelliJ IDEA 2019.1.1(Ultimate Edition) 运行环境: JDK1.8, Tomcat8.0, Maven3.6 我们在学习新的无论是jar包, 框架, ...

  2. 最全面 Nginx 入门教程 + 常用配置解析

    转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 ...

  3. 【转】【Nginx】Nginx 入门教程 + 常用配置解析

    == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单 ...

  4. Django入门--模板路径配置及渲染

    模板就是前端的页面,Django把html源码写到模板文件中,然后通过特定方法渲染后交给客户端. 模板路径设置方法有两种,分别是在项目目录下设置以及在应用目录下设置. 模板查找顺序:优先在DIRS设置 ...

  5. log4j入门及常用配置

      <pre class="java" name="code">import org.apache.log4j.BasicConfigurator; ...

  6. 【Python全栈-后端开发】Django入门基础-2

    Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用 ...

  7. django入门7之django template和xadmin常用技巧

    django入门7之django template和xadmin常用技巧 <li {% ' == '/course' %}class="active"{% endif %}& ...

  8. 配置文件入门 - WebConfig.config常用配置节点介绍

    一.配置文件入门 .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config.在WinForm程序中配置文件一般是App.config.在Asp.net中一般默认是 ...

  9. Apache入门 篇(二)之apache 2.2.x常用配置解析

    一.httpd 2.2.x目录结构 Cnetos 6.10 YUM安装httpd 2.2.x # yum install -y httpd 程序环境 主配置文件: /etc/httpd/conf/ht ...

随机推荐

  1. Docker详细介绍安装与镜像制作和拉取

    一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...

  2. js中实现隐藏部分姓名或者电话号码

    项目需要, 只显示用户的姓名和手机号开头跟结尾, 其他部分用 * 代替, 借鉴了网上的代码, 参考地址没来得及记下 hidden:function(str,frontLen,endLen) { var ...

  3. Markdown语法大全

    目录 前言: 1.Markdown基础用法 1.1 目录 1.2 标题 1.3 字体样式 1.4 引用 1.5 图片 1.6 超链接 1.7 列表 1.8 表格 1.9 代码 1.10 流程图 1.1 ...

  4. #012python实验课

    通过三到四周的学习Python选修课程已经学到了网络爬虫这一环节. 基础语法混乱 这是,在进行周四实验课程的时候,一直遇到的一个问题.写着写着,就往C语言的语法方向跑了,可以说之前我仅仅是对,pyth ...

  5. 团队作业—预则立&&他山之石

    团队作业-预则立&&他山之石 Deadline: 2017.10.24 22:00pm 作业要求 一.确立团队选题,建立和初步熟悉团队git的协作方式.项目后续的代码.文档都要通过gi ...

  6. 阿里云短信服务调用例子-Python

    阿里云短信服务调用例子 阿里云官方文档https://helpcdn.aliyun.com/document_detail/101893.html 首先需要安装阿里云PythonSDK(下面是pyth ...

  7. Python的datetime模块分析

    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime ...

  8. animate()写无限循环

    var css = {left:'500px'}; $('.arrow').animate(css,300,rowBack); function rowBack(){ if(css.left==='5 ...

  9. (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...

  10. Jmeter-csv文件参数化

    本文以登录的用户名和密码为例 1    创建csv文件 创建.csv文件,用户名和密码中间以逗号隔开 图 1 创建csv文件 2    在线程组中添加并配置CSV Data Set Config 添加 ...