Django基础
来源:互联网 发布:百度人工智能发展现状 编辑:程序博客网 时间:2024/06/05 05:48
1.MVC与MTV:
两个Web框架MVC MTV
MVC
Mobel View Controller
数据库 模板文件 业务处理
MTV
Moble Template View
数据库 模板文件 业务处理
Django是一个基于MTV的框架
2.安装Django
pip3 install django
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts
3.创建Django工程
django-admin startproject mysite 【工程名称】
mysite
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 一套WSGI规范 本质是依据规则创建一个Socket
- manage.py #管理django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate
4.运行Django功能
python manage.py runsever 127.0.0.1:port
5.创建app
以chouti为例子
-chouti
-配置
-主站 app
-后台管理 app
创建app
python manage.py startapp cmdb
python manage.py startapp openstack
python manage.py startapp …(可以创建很多)
6.app简介
app目录:
migrations #数据修改表结构
admin #Django为我们提供的后台管理
app #配置当前app
models #ORM,写指定的类,通过命令就可以创建数据库结构
tests #单元测试
views #业务逻辑代码
from django.shortcuts import renderf = open('templates/login.html','r',encoding='utf-8')data = f.read()f.close()上述三行代码 = render(request,'login.html')
7.新建Django
①配置模板的路径 即templates的路径
settings->’DIRS’->[os.path.join(BASE_DIR,’templates’)]
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', ], }, }, ]
②配置静态目录static
STATIC_URL = '/static/'STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'),)<link rel="stylesheet" href="/static/commons.css"/> /static<script src="/static/jquery.min.js"></script> /static
8.CSRF
CSRF:跨站请求伪造
settings中先找到middleware 暂时先注释这句话csrf
注意:
urls里边的urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^home', views.home),
如果有斜杠r’^login/’则在login.html中action=”/login/”也有斜杠
如果没有斜杠r’^home’则在login.html中action=”/home”也没有斜杠
要注意这个对应关系,否则会出现403错误
9.写代码
①定义路由规则
在url.py中写
“login” –> 函数名 不带括号
②定义试图函数
app下views.py def fun(request): # request.method GET/POST # request.GET.get('',None) 获取请求发来的数据 # request.POST.get('',None) #return HttpResponse('字符串') #return render(request,'Http模板的路径') #return redirect('/只能填URL') #redirect重定向
③模板渲染
Django中有特殊的模板语言{{}}
def func(request): return render(request,'index.html',{'current_user':sms})index.html<html> <body> <div>{{current_user}}</div> {{}}是一个特殊的标记可以替换sms </body></html>==>显示出来的样式,生成的sms的字符串<html> <body> <div>sms</div> {{}}是一个特殊的标记可以替换sms </body></html>
For循环
def func(request): return render(request,'index.html',{'current_user':sms}, 'user_list':['alex','erric'])<html> <body> <div>{{current_user}}</div> <ul> {% for row in user_list %} <li>{{row}}</li> {% endfor %} </ul> </body></html>
索引
def func(request): return render(request,'index.html',{'current_user':sms}, 'user_list':['alex','erric'], 'user_dict':{'k1':'v1','k2':'v2'})<html> <body> <div>{{current_user}}</div> <a>{{ user_list.0 }}</a> <a>{{ user_list.1 }}</a> <a>{{ user_dict.k1 }}</a> <a>{{ user_dict.k2 }}</a> </body></html>
条件
def func(request): return render(request,'index.html', {'current_user':sms}, 'age': 18, 'user_list':['alex','erric'], 'user_dict':{'k1':'v1','k2':'v2'})<html> <body> <div>{{current_user}}</div> <a>{{ user_list.0 }}</a> <a>{{ user_list.1 }}</a> <a>{{ user_dict.k1 }}</a> <a>{{ user_dict.k2 }}</a> {% if age %} <a>有年龄</a> {% if age > 16 %} <a>老男人</a> {% else %} <a>小鲜肉</a> {% endif %} {% else %} <a>无年龄</a> {% endif %} </body></html>
- django基础
- django基础
- django 基础
- Django 基础
- django基础
- Django基础
- django基础
- django基础
- django基础
- django基础
- Django基础
- Django基础
- Django基础
- django 基础
- Django 基础
- Django基础
- Django基础-过滤器
- Django基础+优化
- hdu 1231
- 题目描述 给定一个字符串,找出该字符串的最长回文子串。回文字符串指的就是从左右两边看都一样的字符串,如aba,cddc都是回文字符串。字符串abbacdc存在的回文子串有abba和cdc,因此它的最长
- C++中sizeof和结构体以及内存对其
- web.xml文件的作用及基本配置
- keras相关笔记记载
- Django基础
- LeetCode 380. Insert Delete GetRandom O(1)
- java类的加载机制
- js获取当前Unix时间戳
- 《Cortex-M3权威指南》笔记——Chpt01 介绍
- js实现页面动态显示星级评价
- Km算法 二分图最大权匹配
- java并发编程学习5--并行流
- 解决 Implementation of project facet jst.web.jstl could not be found. Functionality will be limited.