Django简介和简单的搭建步骤

一、创建虚拟环境

为什么需要虚拟环境?

多个服务器部署的时候发现对于库和包的管理非常混乱,主要有俩个版本问题:
  1. 因为业务需要,代码得分别部署在不同的服务器上面,每次部署的时候都得重复的安装包而且不能确定是否跟开发环境中的包版本相同
  2. 在本地环境下,不同的程序得用到不同版本的库和包,为了防止不同程序之间的混乱
所以需要对环境进行管理,才不会使开发环境和运行环境混乱。
Virtualenv的延伸工具-----virtualenvwrapper,让环境管理变的更加的容易。
功能:
  • 将所有的虚拟环境整合在一个目录下。
  • 管理(新增、移除、复制)所有的虚拟环境。
  • 可以使用一个命令切换虚拟环境。
  • Tab 补全虚拟环境的名字。
安装:
pip install virtualenvwrapper

 

使用:
  • 列出虚拟环境列表:workon 或者lsvirtualenv
  • 新建虚拟环境:mkvirtualenv [虚拟环境名称]
  • 启动/切换虚拟环境:workon [虚拟环境名称]
  • 删除虚拟环境:rmvirtualenv [虚拟环境名称]
  • 离开虚拟环境:deactivate

举例:
新建虚拟环境:
mkvirtualenv Test

 

终端会显示,虚拟环境的创建过程,创建成功后会自动进入该虚拟环境:
 
chenxing@Ubuntu:~/project/GamePF/s/init$ mkvirtualenv Test
New python executable in Test/bin/python
Installing setuptools, pip...done.
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/get_env_details
(Test)chenxing@Ubuntu:~/project/GamePF/s/init$ 

 

之后可以通过上述“使用”中列出的命令进行虚拟环境的操作。
管理实践:
  最后当你建立好虚拟环境之后,可以在虚拟环境中安装自己项目所依赖的包,你所安装的包,会在你创建的虚拟环境下面,与外界的开发环境隔离开来,之后你可以通过生成requirements.txt的方式将项目所依赖的所有包以及包的版本写入该文件:
  1. 将包依赖信息写入requirements.txt中:
 
pip freeze > requirements.txt

     2. 之后可以将该包上传到项目版本管理工具(svn, git)中,服务器拿到代码后,通过requirements.txt进行项目包的下载:

pip install -r requirements.txt

之后如果有什么扩展包的安装,可以通过上述 第1步 和 第2步 的方式对开发环境和部署环境进行很好的管理。

二、Django简介

 (一)MVC框架和MTV框架

MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

 

Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。

Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。

更详细的MVC模式 > 点我

(二)Django的MTV模式

Model(模型):负责业务对象与数据库的对象(ORM)

       Template(模版):负责如何把页面展示给用户

       View(视图):负责业务逻辑,并在适当的时候调用Model和Template

此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

 (三)Django的框架结构

三、安装Django

1、命令行安装

pip3 install django==1.11.15

 2、pycharm

file ==>settings project ==>点加号 输入django 选择版本 下载

四、创建Django项目

1. 命令行
django-admin startproject 项目名

django-admin startproject mysite

  2、 pycharm

file ——》 new project ——》 django ——》 项目名 ——》选择解释器 ——》create

3、目录结构

mysite/
├── manage.py  # 管理文件
└── mysite  # 项目目录
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py  # 路由 --> URL和函数的对应关系
    └── wsgi.py  # runserver命令就使用wsgiref模块做简单的web server

 五、创建APP

一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码。

1、命令行创建

cd 切到manage.py目录下

python manage.py startapp app01

2、使用PyCharm创建

可以使用PyCharm的manage.py工具来执行命名。在主菜单栏中选择Tools,在下拉菜单中选择Run manage.py task,会出现如下图所示的工具对话框

在弹出的命令窗口中直接输入下面的命令便可创建app:

startapp app01  # 使用PyCharm的manage.py工具执行命令时,只用输入命令及参数即可,不再输入python manage.py了。

3、目录结构

app01/
    migrations
        __init__.py
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

4、注册APP

在settings.py里设置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config', # 也可以直接设置app01但是没有逼格
]

 六、配置文件

(一)模板文件配置 TEMPLATES

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "template")],  # template文件夹位置
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 (二)静态文件配置

STATIC_URL = '/static/'  # HTML中使用的静态文件夹前缀 别名
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),  # 静态文件存放位置
]

刚开始学习时可在配置文件中暂时禁用csrf中间件,方便表单提交测试。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

 (三)Django项目使用MySQL数据库

. 在Django项目的settings.py文件中,配置数据库连接信息:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "你的数据库名称",  # 需要自己手动创建数据库
        "USER": "数据库用户名",
        "PASSWORD": "数据库密码",
        "HOST": "数据库IP",
        "POST": 3306
    }
}

2. 在与Django项目同名的目录下的__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库:

import pymysql
 
pymysql.install_as_MySQLdb()

3、执行两条命令

python manage.py makemigrations [app名称] # 检查你的app下的models.py是否有变化 有变更将记录到app下的migrations文件夹下,不加app名称表示检查所有的app 
 python manage.py migrate # 把变更记录更新到数据中 

或者Pycharm 里点击run manage.py task

输入

makemigrations 「app名称」不加app名称表示检查所有的app
migrate

七、配置路由系统

在urls.py里设置对应函数

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login),
    url(r'^index/', views.index),
    url(r'^test/', views.test),
    url(r'^logout/', views.logout),
]

八、编写视图函数

在对应app下的views.py里编写对应的逻辑

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

九、运行Django项目

(1)命令行:

cd manage.py 的目录下
python manage.py runserver # 默认的 127.0.0.1:8000
python manage.py runserver 80 # 指定端口 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 指定IP和端口 0.0.0.0:80

 允许外部访问

允许外部访问的步骤:

调整防火墙

开启django时,使用0.0.0.0:xxxx,作为ip和端口例如: python manage.py runserver 0.0.0.0:9000 然后在settings里修改ALLOWED_HOSTS = [], 改为ALLOWED_HOSTS = ['*',],注意不要漏掉“,”。 其他机器就可以通过这台机器的ip和端口号访问django了。 例如:http://192.168.14.40:9000/index.html

猜你喜欢

转载自www.cnblogs.com/mjc69213/p/9689043.html
今日推荐