django--基础操作
Django基础操作
django常用命令
- 创建django项目
django-admin startproject mysite

创建项目完成以后,文件目录结构为:

修改settings文件内容
ALLOWED_HOSTS = ["*"] # 允许的主机后面加 * 或者加对应的IP
LANGUAGE_CODE = 'zh-Hans' # 语言编码改为zh-Hans
TIME_ZONE = 'Asia/Shanghai' # 时区必变 Asia/Shanghai
USE_TZ = False # 改为False伊娃
- 创建APP
python manage.py startapp polls

app创建完成以后,修改settings文件以下内容

修改mysite文件夹下urls内容(作为跳转使用,方便以后管理)

注:何时使用include

# path的四个参数(两个必传,两个可选) # path参数: route
# path参数:views
# path参数:kwargs
# path参数:name
创建完APP以后,polls文件夹下面的内容为:

创建urls.py文件,写以下图内容

- 写models文件
from django.db import models # Create your models here. class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published') class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
- 生成models的迁移文件
python manage.py makemigrations

注:如果不写APP名字的话,为全部app
- 把迁移文件写入数据库
python manage.py migrate

- 进入shell环境
python manage.py shell
通过模型类操作数据表
# 进入shell环境以后,首先导入模型
from polls.models import * # 导入全部模型
from django.utils import timezone # 导入时间模块
# 创建方法一:
q = Question(question_text="什么地方的菜最有特色?", pub_date=timezone.now())
q.save() # 关联创建,用问题关联创建选项
q.choice_set.create(choice_text="湖南") # 创建方法二:
q = Question() # 创建实例对象
q.question_text = "什么地方的菜最有特色?"
q.pub_date = timeaone.now()
q.save() # 创建方法三:
Question.objects.create(question_text="什么地方的菜最有特色?", pub_date=timezone.now()) # *********************************************** # 修改方法一:
Question.objects.update(question_text = "什么地方最好玩?") # 修改方法二:(这个方法不适合批量修改,只以最后一次保存为准,请谨慎使用)
q.question_text = "什么地方的菜最有特色?" # *********************************************** # 删除:(先查询到某个id的内容,然后用删除命令)
q = Question.objects.get(id=1)
q.delete() # *********************************************** # 查询
q = Question.objects.all() # 查询全部 q = Question.objects.get(id=1) # 查询指定的一个 Question.objects.filter(question_text__startswith='什么地方') # 过滤查询,查询 以某某开头的内容 q.choice_set.count() # 查询跟本问题关联的选项的个数 Choice.objects.filter(question__pub_date__year=current_year) # 查找问题发布日期为本年的所有的选项 # 关联查询
q.choice_set.all() # 查询跟这个问题关联的所有的选项
运行项目(python manage.py runserver)
一、本机测试运行命令
# 在cmd命令行,cd进入项目所在目录,调试好当前项目所用的python环境,我这里用的py_data环境,使用python manage.py runserver 命令
(py_data) D:\python\django\mysite>python manage.py runserver

二、本机做为主机运行命令(python manage.py runserver 0.0.0.0:8080)
# 在cmd命令行,cd进入项目所在目录,调试好当前项目所用的python环境,我这里用的py_data环境,使用python manage.py runserver 命令
(py_data) D:\python\django\mysite>python manage.py runserver 0.0.0.0:8080

- 编写views
往页面上渲染文字,不做任何跳转,用HtppResponse
from django.http import HttpResponse # 导入django内置模块 HttpResponse def index(request):
"""
测试:只往网页上返回文字
"""
return HttpResponse("<h2>Hello World!!</h2>") # 可以写入H5标签
同一个App之间跳转使用render
from django.shortcuts import render # 导入django内置模块render def index(request):
"""
测试:同一App之间的页面跳转
context为字典形式,里面传入的内容为键值对形式,为需要往网页上面渲染的内容
"""
context = {}
return render(request, "polls/index.html", context)
不同App之间的页面跳转使用HttResponseRedirect和reverse搭配使用
from django.http import HttpResponseRedirect
from django.urls import reverse def login(request):
"""
测试:登陆成功,跳转网站首页
"""
info = dict(rquest.POST)
'''判断登陆信息与数据库是否相同,如果相同做以下跳转'''
return HttpResponseRedirect(reverse("index:index"))
'''判断登陆信息与数据库如果不相同,做以下跳转'''
return render(request, "polls/index.html", context={"message": "账号和密码不对,请重新登陆"})
提取权限控制,get和post访问返回提示
from django.shortcuts import render
from django.http import HttpResponse # 提取共同的方法,写成装饰器,在需要用到的地方,加上这个权限控制
# 访问页面如果用的是post请求,执行views里面加入装饰器的方法,
# 如果用的是get请求,返回没有权限浏览页面
def verify_control(fun):
def verify_con(request):
if request.method == 'POST':
return fun(request)
elif request.method == 'GET':
return HttpResponse("你没有权限浏览该网页") return verify_con
接口写法,返回形式为json格式
from .models import *
import json
from .verify import * # 导入写入的权限控制
import re
from django.shortcuts import render
from django.http import HttpResponse @verify_control # 加入装饰器,如果用的get方式提交,则提示没有权限
def api_add_question(request):
"""
测试:用接口的形式提交
本接口为前端新建问题,用post提交数据
需要用到的参数:{"question_text": "xxx","pub_date":"2019-01-17"}
"""
info = dict(request.POST)
try:
Question.objects.get(question_text=info["question_text"][0])
except Subject.DoesNotExist:
Question.objects.create(question_text=info["question_text"][0],
pub_date=info["pub_date"][0])
return HttpResponse(json.dumps({"message": "添加成功"}))
else:
return HttpResponse(json.dumps({"message": "该问题已经存在,不需要重添加"}))
新建teamplates和static文件夹
teamplates(里面放的是网站的html文件)

static(里面放的是css,js ,图片,音乐,视频等一系列的文件)

注:teamplates下面新建app同名的目录,方便以后发布网站时,整理静态文件和html文件
django--基础操作的更多相关文章
- django基础操作
web应用程序:可以通过web访问的应用程序 bs/cs架构 http协议 基于TCP/IP协议之上的应用层协议 基于请求-响应模式:客户端先发送请求,服务端再响应 无状态保存:http协议对于发送的 ...
- python Django基础操作
Django常用命令 创建Django项目 Django-admin startprotect mysite 创建项目以后,以下生成的文件 最外层的file:mysite/ 根目录只是你的项目的容器 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- Django基础之jQuery操作
Django基础之jQuery操作 jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.j ...
- day 66 Django基础之jQuery操作cookie
Django基础之jQuery操作cookie jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery. ...
- day 70 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
- day 62 Django基础之jQuery操作cookie
Django基础之jQuery操作cookie jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery. ...
- day 56 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- day 55 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...
随机推荐
- HDU5110:Alexandra and COS(分块+容斥)
传送门 题意 给出\(n*m\)的矩阵,'X'代表treasure.\(q\)个询问,每次询问(x,y)且频率为d的潜艇能探索到多少财富.探索范围要求abs(x1-x)>=abs(y1-y),也 ...
- POJ2365【几何】
因为给出的点已经是顺时针了, 整个长度=相邻点距离+一个圆周长: C++ac代码-G++wa-因为标准不一样.G++用f //#include <bits/stdc++.h> #inclu ...
- Codeforces627A【数学·有意思】
题意: 求有多少对( a , b ),a+b=s,a^b=x.(正整数) 思路: a+b=a^b+a&b*2; #include <iostream> #include <c ...
- 如何才能优雅地书写JS代码
第一:关于匿名函数的使用 要避免全局变量泛滥, 可以考虑使用匿名函数, 把不需要在外部访问的变量或者函数限制在一个比较小的范围内. 例如以下代码: <script> function fu ...
- 数位dp真·浅谈 By cellur925
预警:由于是从$Vergil$学长那里和$Mathison$大神那里学来的,所以清一色记忆化搜索!qwq 巨佬的数位dp讲解(未来的咕咕日报头条): https://www.luogu.org/blo ...
- yield 为什么不能进入回调函数
操他妈的, allowed_domains = ['voice.hupu.com'] 这里面必须是域名,而不能是个路径,遇见问题不要瞎几把想,及时Google才是正道!!!!!!!!!11 感谢: h ...
- UVa 12186 Another Crisis 工人的请愿书
c表示某上司上报的最少请愿下属,k表示总下属c=0.01T*k=kT/100(0.01T*k是整数)c=[0.01T*k]+1=[kT/100]+1(0.01T*k不是整数) kT=100 c=1 k ...
- 基于node 搭建http2服务
1.准备工作:安装node2.安装http2: npm install http2 -g安装完成后,在安装目录中appData/Roaming>npm>node_modules>ht ...
- qconbeijing2018
https://2018.qconbeijing.com/schedule 会议 · 第一天 (2018/04/20 周五) 时间 日程 上午 主题演讲 大数据下的软件质量建设实践 黄闻欣 出品 人工 ...
- [转]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
本文转自:http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NE ...