Django入门

Django

版本

img

安装

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     全局设置文件
        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'
  • 配置app
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    'app名字'
]
  • url和视图函数/对象对应关系(支持分发给app)
django

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', home),
    url(r'^app01/', include('app01.urls', namespace='app01')),
    url(r'^book/', include('book_manage.urls', namespace='book')),


]

app01

urlpatterns = [
    url(r'login/',views.login)
]


使用
127.0.0.1:8000/app01/login/

配置数据库-mysql

主要注意

  • 在django orm中没有char字段,但是django暴露给用户可以自定义char字段的功能
  • 增加字段,如果数据库已经有数据,需要给新增的字段添加默认值,或者设为空(default,null=True)
__init__.py配置MYSQLdb,django默认回去使用MYSQLdb
使用pymysql代替MYSQLdb
import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
    'default':{
        'ENGINE':'django.db.backends.mysql',
        'NAME':'db1',
        'USER':'root',
        'PASSWORD':'1',
        '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')],
 

模板渲染

    <select name="author" multiple="multiple">
    	{% for author in author_queryset %}
    		<option value="{{ author.id }}">{{ author.name }}</option>
    	{% endfor %}
    </select>
通过for循环和对象生成select选择框    

模板语法
变量相关:{{  }}
逻辑相关:{%  %}
变量只支持.取值

静态资源

创建static静态资源文件夹
STATIC_PATH = os.path.join(BASE_DIR,'static')

STATICFILES_DIRS = (
    STATIC_PATH,
)


*******

STATIC_URL = '/static/' 这个可以是任意值(相当与密钥),当网页中加载静态文件时先书写这个密钥,然后拿着剩下的链接在			STATICFILES_DIRS中的地址拼接查询文件,如果都找不到就是真的找不到了

#引用 动态的和STATIC_URL相互对应
{% load staticfiles %}
<img src="{% static 'img/Mysql.jpg' %}" alt="">

CSRF

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

返回数据

三板斧

from django.shortcuts import render,HttpResponse,redirect
HttpResponse  # 返回字符串的  
    
render  # 返回html页面 
      
redirect  # 重定向302

request

获取post请求的数据
request.POST

获取get请求携带的数据
request.GET

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

在post请求中的文件
file_obj = request.FILES.get('form表单中接收文件的name值')
posted @ 2019-10-28 16:21  ~李  阅读(117)  评论(0编辑  收藏  举报