Django

版本

安装

pip安装

pip install django 安装最新版本的
pip install django==1.11.11 安装指定版本的

验证安装

直接去代码中调用django的模块

import django
print(django.get_version()) 1.11.11

或者命令行使用

django-admin

创建项目

命令行注意要在文件相对应的目录创建文件

创建django项目
django-admin startproject zx1
启动django项目-测试服务器,压力很小,500左右
python manage.py runserver ctrl+c关闭
创建应用app
python manage.py startapp app01

注意

1.新创建的命令行新建的app需要自己去setting文件中注册

2.pycharm只会帮你注册第一个你用pycharm创建的应用

django目录

mysite
mysite Python包
__init__.py 项目可以作为包
settings.py 全局设置文件
apps 配置当前app的,暂时用不到
urls.py 全局路由控制
wsgi.py wsgi服务器的配置文件(高并发的)
manage.py Djago项目管理

app目录

app
__init__.py 项目可以是一个包
admin.py 数据库如果希望被后台看到,需要在这个文件注册
models 创建该APP可能使用到的数据库
test 测试
views 实现对应业务的函数

配置全局路由

1.x是相当于2.x的re_path,是可以支持正则匹配的路由

2.x的path是不支持正则的

url(r'',zx1_views.index)

数据库生成命令

创建默认数据库,每次修改models.py数据模型,都要执行下面两句

python manage.py makemigrations 检查数据库差异(同步),生成迁移文件(migrations)
python manage.py migrate 根据迁移文件生成对应的SQL语句

创建admin用户

python manage.py createsuperuser

setting配置

时区和语言设置

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai' #如果要操作数据库,记得把下面置为False,否则不会使用以上配置的时间,操作数据库
USE_TZ = False

配置app

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01'
]

app-url配置

django
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'zx',zx1_views.index),
url(r'app01',include('app01.urls')),
# url('app01',include('app01.urls',namespace='app01'))
] app
urlpatterns = [
url(r'login/',views.login)
]

配置数据库-mysql

主要注意

1.在django orm中没有char字段,但是django暴露给用户可以自定义char字段的功能

2.增加字段,如果数据库已经有数据,需要给新增的字段添加默认值,或者设为空(default,null=True)

__init__.py django默认使用MYSQLdb,但是该模块不兼容,不推荐使用
所以告诉django回去使用pymysql模块连接数据库
使用pymysql代替MYSQLdb
import pymysql
pymysql.install_as_MySQLdb() DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'zx2',
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'UTF8'
}
} id = models.AutoField(primary_key=True) 在django中,可以不指定主键字段
django orm会自动给当前表新建一个名为id的主键

页面资源配置

pycharm自己会创建

手动在项目下创建一个templates文件
'DIRS': [os.path.join(BASE_DIR, 'templates')], return render(request,'login.html')

模板渲染

<h1><span>{{date}}</span>欢迎来到登录界面</h1>

today = datetime.datetime.now()
content = {'date':today}
return render(request,'login.html',content) 模板语法
变量相关:{{}}
逻辑相关:{%%}

静态资源

用户能在浏览器中输入网址访问到相应的资源,前提是后端暴露了该资源的接口

创建static静态资源文件夹
STATIC_PATH = os.path.join(BASE_DIR,'static')
STATICFILES_DIRS = (
真实的
STATIC_PATH,
) 虚拟的
STATIC_URL = '/static/' 访问静态资源的前缀,可以更改,但是要和html的对应 #引用 动态的和STATIC_URL相互对应
{% load staticfiles %}
<img src="{% static 'img/Mysql.jpg' %}" alt="">

CSRF

跳过csrf
1.{% csrf_token %}在from表单中加
2.# 'django.middleware.csrf.CsrfViewMiddleware',在setting中注释

媒体文件配置media

新建文件夹

media

setting

# 媒体文件配置
MEDIA_URL = '/media/'
# media文件夹的绝对路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

url

from django.views.static import serve
from django.conf import settings
# 在总路由的最下方对外开放media接口
url(r'media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT})

ORM执行查看原生SQL的两种方法

1.在setting中配置

            LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}}

2.如果查询的结果是queryset对象可以.query查看命令

只要是queryset对象就可以无限制的点queryset对象的方法,queryset.filter().filter().filter()

搭建django-ORM测试环境

from django.test import TestCase
import os
# Create your tests here.
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zx1.settings")
import django django.setup()
from app01 import models
# 你就可以在下面测试django任何的py文件

返回数据

三板斧

from django.shortcuts import render,HttpResponse,redirect
HttpResponse # 返回字符串的 render # 返回html页面 redirect # 重定向 返回的其实都是HttpResponse对象

request

获取post请求的数据
request.POST 获取get请求携带的数据
request.GET request.POST.get('username') 默认只取数据列表最后一个元素
如果想要取出所有的元素,就必须使用getlist()

django初始化的更多相关文章

  1. Django 初始化数据库

    django 初始化数据库 刷新数据库guoguos-MacBook-Pro:mysite guoguo$ python manage.py sqlflushBEGIN;SET FOREIGN_KEY ...

  2. django 初始化项目 和modelviewset 使用

    django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...

  3. Django初始化之基本操作

    1.指定要安装的Django版本 C:\Users\win7>pip install Django==1.11.8 2.查看安装的django版本 C:\Users\win7>pip sh ...

  4. 【解决方案】django初始化执行python manage.py migrate命令后,除default数据库之外的其他数据库中的表没有创建出来

    [问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案 ...

  5. django 初始化 介绍 生命周期

    安装好django,配置模板,静态文件 # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init ...

  6. Django 初始化数据库遇到问题(python manage.py migrate)

    问题:django.db.utils.InternalError: (1049, "Unknown database 'main'") 在Django 配置的数据库上 执行  cr ...

  7. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  8. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  9. Django学习之七:Django 中间件

    目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...

随机推荐

  1. SpringBoot正确打日志的姿势

    前篇 Spring Boot 日志处理你还在用Logback? 本文简介 前篇侧重 Log4j2 的配置,本篇侧重统一日志处理的应用,以下包含 HTTP 请求的日志处理.Exception 异常日志处 ...

  2. 爬虫之selenium爬取京东商品信息

    import json import time from selenium import webdriver """ 发送请求 1.1生成driver对象 2.1窗口最大 ...

  3. TCP/IP协议第一卷第三章 IP首部分析

    IP介绍 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP.IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 不可靠(unreliable)它不能 ...

  4. CSPS模拟 98

    T1 待改 T2 这道题的爆炸充分说明我最近已经颓到一定境界了 考虑到总步数不可能超过n 直接枚举总步数,那么任意时刻对末态的影响就是确定的 T3 两遍最短路,一遍从-1的限制考虑求出允许的最早时间, ...

  5. 「卡常」我T死了我好桑心,我不会卡常。

    我死了我死了我死了 puts(“Lrefrain==T”)

  6. 爬虫学习--Requests库详解 Day2

    什么是Requests Requests是用python语言编写,基于urllib,采用Apache2 licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足 ...

  7. day-5元组专区

    *元组,元素不可被修改,不能被增加或者删除tupletu = (11,22,33,44)tu.count(22),获取指定元素在元组中出现的次数tu.index(22),索引22在元组中位置(左到右第 ...

  8. 连接xshell 时 连不上的问题

      最近这一周由于自己的xshell突然连接不到虚拟机,在网上找了很多种方法也没能解决,以至于自己在学习很多知识的时候都没能很好的去验证,去尝试.最后在求助大佬的时候终于将xshell重新连接到了虚拟 ...

  9. PHP 在 Laravel 中动态隐藏 API 字段

    我最近在 Laravel Brasil 社区看到一个问题,结果比看起来更有趣.想象一下你有一个 UsersResource 用下面的实现: <?php namespace App\Http\Re ...

  10. Head First设计模式——命令模式

    前言:命令模式我们平常可能会经常使用,如果我们不了解命令模式的结构和定义那么在使用的时候也不会将它对号入座. 举个例子:在winform开发的时候我们常常要用同一个界面来进行文件的下载,但是并不是所有 ...