玖富娱乐平台全网唯一指定1956注册开户网站

Django 系列博客(二)_玖富娱乐主管发布

日期:2019-01-04 浏览:
玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

Django 系列博客(二)

媒介

本日博客的内容为运用 Django 完成第一个 Django 页面,并举行一些简朴页面的搭建和转跳。

敕令行搭建 Django 项目

竖立纯洁虚拟环境

在上一篇博客中已装置好了虚拟环境,以是用虚拟环境来装置指定版本的 Django。为了能够从头至尾的走一遍流程,我从新竖立了一个虚拟环境。

激活虚拟环境并装置 Django

  1. 起首进入虚拟环境途径下的 bin 目次
  2. 运用敕令激活虚拟环境

  1. 装置指定版本 Django

起首运用 pip3 list 敕令检察

能够看到都是竖立虚拟环境时装置的依靠包,如今运用 pip 敕令装置指定 django 版本,由于做项目须要稳固,以是装置的版本不是最新的。

能够看到新装置了2个包,pytz 是 python time zone 的缩写,是用来转换时区的包。

竖立项目

前去目的途径竖立项目,在这里我的 django 项目都在我的家目次下面的 django_project内里。

进入要竖立项目的途径下,运用下面的敕令竖立一个 django 项目。

django-admin startproject project_name

能够看到多了个文件夹。检察项目构造

竖立运用

进入项目根目次运用下面敕令竖立一个 app。

python3 manage.py startapp app_name

竖立胜利并检察项目构造。

启动项目

运用下面敕令

python3 manage.py runserver 127.0.0.1:8888

胜利后会在本机上的8888端口开启 django 效劳

接见8888端口会显现下图页面

好了,到如今你已开启了第一个 django 效劳,而且照样运用了敕令行。

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

pycharm 竖立 Django 项目

实在会运用敕令行竖立项目那末运用 pycharm 应该是易如反掌,究竟结果 pycharm 已做了许多工作了。不外也有点贫苦。。。

在虚拟环境下运用 pycharm 装置指定django 版本

竖立项目

项目目次构造及作用

项目目次:包罗项目最基本的一些设置装备摆设
    -- __init__.py:模块的设置装备摆设文件,将blog_proj文件夹变成了模块
    -- settings.py:设置装备摆设总文件
    -- urls.py:url设置装备摆设文件,django项目中的一切页面都须要对其设置装备摆设url所在
    -- wsgi.py:(web server gateway interface),效劳器网关接口,python运用与web效劳器直接通讯的接口
templates:模板文件夹,寄存html文件的(页面),支撑运用Django模板言语(DTL),也能够运用第三方(jinja2)
manage.py:项目治理器,与项目交互的敕令行工具集的进口,检察支撑的一切敕令python3 manage.py

settings.py构造

import os
# 项目根目次
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 项目安全码
SECRET_KEY = 'guwba1u$18=&*8kf44_u&swqb@xlwgel7n$0rs=( f10yvz)p0'

# 调试形式,上线项目要封闭debug形式,否则背景涌现异常会直接抛给前台展示给用户看了
DEBUG = True

# 在上线项目中,划定只能以甚么ip所在来接见django项目
# DEBUG = FALSE
# ALLOWED_HOSTS = ['localhost']
ALLOWED_HOSTS = []

# 项目自带的运用
# 我们竖立了本身的运用就要将自界说运用增添到该设置装备摆设
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 中间件
# django自带的工具集
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',
]

# 设置装备摆设url配件文件的根文件,实行urls.py
ROOT_URLCONF = '项目目次.urls'

# 模板,一个个html文件
TEMPLATES = [
    {
        # 若是运用第三方,能够在这个处所修正模板引擎
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        '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',
            ],
        },
    },
]

# 效劳器网关接口运用
WSGI_APPLICATION = '项目目次.wsgi.application'

# 数据库设置装备摆设
# 要设置装备摆设自界说数据库去下面链接去查询细致设置装备摆设
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# 暗码认证设置装备摆设
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# 国际化相干设置装备摆设
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

# 静态文件所在 (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'

竖立项目运用

运用 pycharm 自带的敕令行工具来竖立运用

运用竖立完后将运用名增添到 settings.py文件中

INSTALLED_APPS = [
    'django.contrib.admin',
        ...
    'django.contrib.staticfiles',
    # 增添的自界说运用
    'app',
]

app目次构造

竖立后的 app 目次构造和运用敕令行竖立的一样,下面来看看详细都有甚么作用

migrations:数据迁徙(移植)模块,内容都是由Django自动天生
    -- __init__.py
__init__.py
admin.py:运用的背景治理系统设置装备摆设
apps.py:django 1.9后,本运用的相干设置装备摆设
models.py:数据模型模块,运用ORM框架,类似于MVC形式下的Model层
tests.py:自动化测试模块,能够写自动化测试剧本
views.py:实行相应的逻辑代码模块(相应甚么,怎样相应),代码逻辑处置惩罚的重要所在,项目的大部分代码所在位置

页面相应

第一个相应

经由过程设置装备摆设路由和视图文件来相应第一次衔接要求。

设置装备摆设路由

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

# 导入运用视图
import app.views as app_view # 取别号

# 设置装备摆设路由
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 为指定函数设置装备摆设 url
    url(r'^index/&', app_view.index)
]

设置装备摆设视图

# 导入处置惩罚要求的 http 相应功用
from django.http import HttpResponse

# django中每个要求都邑设置相应函数来举行处置惩罚
# 函数的参数约定为 request
def index(request):
    return HttpResponse('index page!')

启动效劳

启动效劳后接见 localhost:8000/index/,能够看到相应为 index 函数里填写的相应,申明效劳胜利启动而且相应了本身想要的相应字符串。

第一个模板页面

项目目次下有个 templates 文件夹是特地用于寄存页面资本的,好比index.html

from django.shortcuts import render

def index(request):
    # 参数:要求工具 request,模板 html 文件,传给前台的资本
    return render(request, 'index.html')

index.html 文件

 <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
    <h1>这是主页</h1>
</body>
</html>

设置装备摆设完成后,接见127.0.0.1:8000/index/后显现为:

在 views.py文件中编写对应相应功用函数时,会自动涌现模板文件

这是由于在 settings.py文件中已把模板途径设置装备摆设好了

TEMPLATES = [
    {
        # 若是运用第三方,能够在这个处所修正模板引擎
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 模板页面默许途径:项目根途径下的templates文件夹
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        # 许可一切app均具有本身的模板文件夹
        'APP_DIRS': True,
        ...
    },
]

第一个重定向

和上面的一样,起首在 views.py文件中设置装备摆设相应函数

from django.shortcuts import render, redirect
# / 途径衬着index.html页面
def home(request):
    return render(request, 'index.html')
# /index/ 途径重定向到 / 途径,到达衬着index.html页面
def index(request):
    return redirect('/')

相应的路由设置装备摆设为

from django.conf.urls import url
from django.contrib import admin
# 导入运用视图
import app.views as app_view
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', app_view.index),
    url(r'^$', app_view.home),
]

状况码显现为301申明发生了转跳,检察收集细致信息发如今index/中有个 location 字段,

该字段值为 /,申明转跳到了根目次下。

其他设置装备摆设

url运用移植

项目目次下的urls.py文件

# 导入include功用,将url设置装备摆设转移到指定运用内部的本身url设置装备摆设文件
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 将url设置装备摆设操纵交给app_test本身的urls.py来举行操纵
    # app-test/为app_test运用的总途径
    url(r'^app-test/', include('app_test.urls')),
]

app_test下的urls.py文件

from django.conf.urls import url
from . import views
urlpatterns = [
    # 1.不要直接留空,直接留空 http://localhost:8000/app-test/* 均能够接见
    # 2.若是要设置装备摆设index,接见的所在为 http://localhost:8000/app-test/index
    # 3.设置装备摆设体式格局:r'^index/$',不要省略 / 标记
    # 4.正则是不是以$标识末端取决于该途径是不是会有下一级途径
    url(r'^$', views.index),
]

多运用雷同模板页面争执

若是在两个运用中均有雷同的模板页面如果为index.html

# 1.在运用templates文件夹下竖立与运用同名的文件夹,eg:app_text下就竖立app_text
# 2.将模板竖立在与运用同名的模板文件夹下
# 3.修正指定运用下views.py处置惩罚要求的render模板指向
def index(request):
    # 模板指向:blog_app运用的templates下的blog_app文件夹中的index.html
    return render(request, 'app_text/index.html')

静态资本的设置装备摆设

如果页面须要一些静态资本,好比须要 css 款式、js 文件等,那末就须要在 settings 文件中设置装备摆设好静态文件的途径。

设置装备摆设 settings.py文件

# 静态文件所在 (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'
# 在项目根目次下新建static文件夹,静态资本均放在该文件夹中
# 增添STATICFILES_DIRS设置装备摆设
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
# 前端页面加载静态资本的途径:/static/... (...为详细在static文件夹中的途径)

拓展静态资本设置装备摆设

# 若是要将项目根目次下source文件夹也作为静态资本途径
# STATICFILES_DIRS增添source设置装备摆设
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'source')
]
# 前端页面加载静态资本途径照旧稳定,Django会自动索引:/static/... (...为详细在source文件夹中的途径)

url正则

原生字符串

# urls.py设置装备摆设路由
url(r'test', app_view.test)

# views.py设置相应函数
def test(request):
    return HttpResponse('test')

# 题目:要求所在包罗test均能够接见
# http://127.0.0.1:8000/test => /test | /atest | /testa | /atesta | /test/a | /test/

开首

# urls.py设置装备摆设路由
url(r'^test', app_view.test)

# views.py设置相应函数
def test(request):
    return HttpResponse('test')

# 题目:要求所在以test开首均能够接见
# http://127.0.0.1:8000/test => /test | /testa | /test/a | /test/

末端

# urls.py设置装备摆设路由
url(r'^test$', app_view.test)

# views.py设置相应函数
def test(request):
    return HttpResponse('test')

# 题目:只能一种体式格局接见
# http://127.0.0.1:8000/test => /test
# 不克不及以 /test/ 接见
# http://127.0.0.1:8000/test/

优化末端

# urls.py设置装备摆设路由
url(r'^test/$', app_view.test)

# views.py设置相应函数
def test(request):
    return HttpResponse('test')

# /test 和 /test/ 均能够接见
# http://127.0.0.1:8000/test
# http://127.0.0.1:8000/test/

# 题目:不克不及作为运用总路由
# eg:app_test运用在项目urls.py
# url(r'^app-test/', include('app_test.urls')) 末端不克不及加$,由于作为运用总目次,是有下一级,若是用$标识末端了,就代表不克不及有下一级路由

所在捕捉

# urls.py设置装备摆设路由
url(r'^test/(d )/d /(d )/$', app_view.test)

# 对应要求途径
# http://127.0.0.1:8000/test/1/22/333/

# 对应相应函数
def test(request, arg1, arg2):
    # arg1: str 1
    # arg2: str 333
    return HttpResponse('test')

小结

# 通例路由设置装备摆设
# r'^index/$'
# r'^page/2/$'

# 运用路由设置装备摆设
# r'^app/'

# 根路由设置装备摆设
# r'^$'

# 路由设置装备摆设均以 / 末端
# ()中的字段会被要求相应函数捕捉

# 限定相应函数捕捉的变量名
# (?P<num>[0-9] ) 相应函数参数(requset, num)
-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。


平台知识

联系方式丨CONTACT

  • 全国热线:7711177
  • 传真热线:010-88888888
  • Q Q咨询:7711177
  • 企业邮箱:
首页
电话
短信