django初始化

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()
posted @ 2019-10-21 20:53  zx125  阅读(768)  评论(0编辑  收藏  举报