Django

Django基础命令
- runserver 本地建议运行Django
- shell 进入Django项目得python shell环境
- test 执行Django 用列测试 数据库相关得命令
- makemigrations 创建模型变更得迁移文件
- migrate 执行上一个命令创建的迁移文件
- dumpdata 把数据库数据导出到文件
-loaddata 把文件数据导入到数据库 创建Django项目
django-admin startproject project_name (项目名称)
创建Django应用
python mamage.py startapp app_name(应用名字)
-- app_name包含文件
- views.py 视图处理的地方
- models 定义应用模型的地方
- admin.py 定义admin 模块管理对象的地方
- apps.py 声明应用的地方
- test.py 编写应用测试用例的地方 Django的视图
- 视图产生内容
- django的路由: 绑定视图函数和url
- 首先在view.py导入 from django.http import HttpResponse 模块,然后编写做一个自定义函数,参数为request, 返回参数的设置return HttpResponse("hell word") # httpresponse 实行返回
- 然后再应用文件中新建一个文件urls.py,导入 from django.urls import path, include ,import blog.views 然后绑定 urlpaterns =[ path('hell word', blog.views.hellword)]
- 打开项目的urls.py 将应转发到项目的view层urlpatterns = [ path('admin/', admin.site.urls),path('blog/', include('blog.urls'))]
- 把应用添加到配置文件中 打开settings.py 在 INSTALLED_APPS 列表中添加元素'blog', blog 是应用名字 Django 模型层
- 初识Djago Adminmo模块
- 模型层是什么
----》 位于django视图层和数据库之间
python对象和数据库之间的转化
可以屏蔽不同数据库之间的差异
模型层中的数据库相关的配置 --- 在setting中的位置:
- DATABASES = { # 数据库的配置
'default': {
'ENGINE': 'django.db.backends.sqlite3', # 项目使用的数据库的驱动,这里表示使用了djgano.sqlite的驱动
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 表示使用的数据库的名字
}
} 创建博客文章模型
- 设计博客文章模型
|- 标题
文本类型-- |- 摘要
|- 内容
- ID标记(唯一的) int 主键自增
- 发布日期 data - 模型层定义字段
- 数字类型:InterField
- 文本: TextField
- 日期: DateTimeFiled
- 自增: AutoField
- 主键: primary_key属性
- 字符: CharField() - 模型的定义
- 在应用文件的model.py 中编辑模板
- from django.db import models
class Article(models.Model):
# ID
Article_id = models.AutoField(primary_key=True)
# 标题
Article_title = models.TextField()
# 摘要
Article_content = models.TextField()
# 文章的主要内容
content = models.TextField()
# 文章的发布日期
publish_date = models.DateTimeField(auto_now=True) # 默认当前时间为发布日期 - 然后 python manage.py makemigrations 模型的变更生成文件
- python manage.py migrate 运行文件把文件中的数据同步到数据库中 -Django Shell
- shell 是什么。。。。python交互式的编程,继承django环境
- 为什么需要用Django Shell。。。临时性的操作更加方便,不需要运行整个项目来测试
- Django Shell的使用
- 打开shell --- python manage.py shell
- 导入模式的包 from blog.models import Article
a= Article() # 实例化类
In [8]: a.title = 'test Django Shell' # 添加每个变量的元素
In [9]: a.brief_content = 'test Django shell ,by hogan'
In [10]: a.content = 'Test Django shell --- hogan'
In [11]: print(a) # 查看实列
Article object (None)
In [12]: a.save() # 保存数据
In [13]: article = Article.objects.all() # 查看表中所有实例
In [15]: print(article[0].title) #
查看第一条数据title数据
test Django Shell
In [16]: print(article[0].content)
Test Django shell --- hogan
- 方便开发、方便调试、方便debug Django Admin 模块
- Django的后台管理工具
- 读取定义的模型元数据,提供强大的管理使用页面 -为什么需要Django Admin模块
◆Django Shell新增文章太复杂了
◆管理页面是基础设施中重要的部分
◆认证用户、显示管理模型、校验输入等功能类似
-Django Admin模块的使用
◆创建管理员用户 python manage.py createsuperuser
◆登录页面进行管理 在浏览器中登录/admin - 把刚刚创建的文章模板放入admin
- 在应用中 admin.py 中 添加
from .models import Article
admin.site.register(Article)
- 运行过后发现没有文章的标题,这个时候需要查看文章的标题就得去models.py 中将文章得标题进行返回:
# 定义函数返回文章的标题
def __str__(self):
return self.Article_title - 将刚刚得文件显示到页面
- 在应用得view.py中编写显示函数,返回文章得参数
from blog.models import Article
def article_content(request):
article = Article.objects.all()[0]
title = article.Article_title
brief_content = article.Article_content
content = article.content
id = article.Article_id
public_date = article.publish_date
str = "title:%s, brief_content:%s, content:%s, id:%s, public_date:%s" % (
title, brief_content, content, id, public_date)
return HttpResponse(str)
- 然后配置应用层路由 urls.py, 项目得路由
path['article',blog.views.article_content]
- 由于项目路由已经配置过了:path('blog/', include('blog.urls')),
所以暂时就不用配置了 初始django视图与模板
◆使用Bootstrap实现静态博客页面
-页面布局设计
-Bootstrap以及Bootstrap的栅格系统
- 参照源码开发bootcss.com
- 把整个页面分成12等份
-实现静态页面 ◆初识Django的模板系统
- 模板系统
-模板系统的表现形式是文本
-分离文档的表现形式和表现内容
-模板系统定义了特有的标签占位符
-基本语法
- 变量: {{}}
- for循环标签:{%forx in list%},{%endfor%}
- if-else分支标签:{%if%),{%else%},{%endif%} ◆使用模板系统渲染博客页面
- -实现文章详情页面的跳转
-设计文章详情页URL
/blog/detail=>不能指定某一篇博客
·/blog/detail/1=>博客唯一ID为1的文章
·/blog/detail/2=>博客唯一ID为2的文章
·/blog/detail/3=>博客唯一ID为3的文章
·/blog/detail/. - 实现分页的功能
- 导入分页 - 运用django的主键实现分页功能
进入shell python manage.py shell
导入分页组件 from django.core.paginator import Paginator
分解介绍:
n [1]: from django.core.paginator import Paginator
In [2]: l = [1,2,3,4]
In [3]: print(l)
[1, 2, 3, 4]
In [4]: p=Paginator(1,2) # l为分页列表,2表示分成两页
In [5]: p.num_pages # 查看一共有几页
In [8]: p.count # 表示一共又几页
page1=p.page(1) # 取第一页的内容
page1.object_list # 取第二页的内容 POST 请求接收数据:
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hell gril</title>
</head>
<body>
<hi> hello word</hi>
<img src="1.jpg"> {#<form action="/index/" method="post" enctype="application/x-www-form-urlencoded">#}
<form action="/index/" method="post" enctype="multipart/form-data"> <p> 用户名: <input type="text" name="username"></p>
<p> 密码 : <input type="password" name="password"></p> <p><input type="checkbox" name="hobby" value="bs"> 爱好 : 篮球</p>
<p><input type="checkbox" name="hobby" value="pq"> 爱好 : 排球</p>
<p><input type="checkbox" name="hobby" value="fb"> 爱好 : 足球</p> <p><input type="radio" name="sex" value=""> 男 </p>
<p><input type="radio" name="sex" value=""> 女 </p> <p> <input type="file" name="file"></p>
<a href="./work_induction.html"> 查看简历 </a> <p><input type="submit" value="发送"></p> </form>
</body>
</html>

后端:

def index(re):
print('psot前端数据:', re.POST)
print("file:", re.FILES) for item in re.FILES:
obj = re.FILES.get(item)
fileName = obj.name # 获取文件名
f = open(fileName, 'wb')
for line in obj.chunks():
f.write(line)
f.close()
return render(re, "index.html")
												

djngo未整理的更多相关文章

  1. LAMP环境CentOS6.4 PHP5.4随笔未整理

    首先安装一些辅助的软件或者说是依赖的关系包. 1.安装libxml2: libxml是一个用来解析XML文档的函数库.它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH.C#, Py ...

  2. [面试] Java GC (未整理完)

    Java GC简介 什么是 GC ? Java程序不用像C++程序在程序中自行处理内存的回收释放.这是因为Java在JVM虚拟机上增加了垃圾回收(GC)机制,用以在合适的时间触发垃圾回收. 你都了解哪 ...

  3. 【未整理】web.xml加载顺序.RP

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  4. HTML、CSS、JS 样式 (未整理)

    随手记,有错误的地方希望留言 ^.-.^ PHP 实现关闭浏览器窗口echo "<script>window.close();</script>"; jqu ...

  5. memcached内存管理机制[未整理]

    memcached默认采用的是Slab Allocator的机制分配管理内存的,在此之前,内存的分配是通过对所有的记录简单地进行malloc和free来进行的,但这种方式容易造成很多内存碎片,加重操作 ...

  6. Ubuntu 16.04 LTS nodejs+pm2+nginx+git 基础安装及配置环境(未完,未整理)

    -.Ubuntu 安装nodejs 以下内容均在命令行,完成,首先你要去你电脑的home目录:cd ~. [sudo] apt-get update [sudo] apt-get upgrade ap ...

  7. ASP.NET基础学习未整理随笔

    利用新建网站添加的项目可以改完代码直接刷新就行 提交到服务程序的表单一定要具有name.<input type="hidden"value="true"n ...

  8. c和c++区别(未整理)

    学习完C语言和c++比较一下他们之间的区别: c++是c语言的基础上开发的一种面向对象的编程语言,应用十分广泛,按理说c++可以编译任何c的程序,但是两者还是有细微的差别. c++在c的基础上添加了类 ...

  9. iOS:以前笔记,未整理版。太多了,先放着吧。。。。。。。

    1. -(void)timetick { _d = 0; NSTimer *newtime =[NSTimer scheduledTimerWithTimeInterval:1 target:self ...

随机推荐

  1. JavaScript基础04——数组的创建及方法

    数组的概念及定义 数组的概念:         一组数据,数据的组和         哪些数据的组和,只要是数据(所有数据),就可以放在数组中 数组的意义:         可以同时操作多个数据 数组 ...

  2. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  3. 安装python问题

    configure: error: in `/home/wangqianqian/Desktop/Python-3.6.7':configure: error: no acceptable C com ...

  4. python接口自动化—封装获取常量的类

    背景: 一.执行case的过程: 首先需要,我们能够通过excel获取单元格的内容.获取内容时,首先需要知道获取的数据是哪一行的,这行数据中需要拿那些参数,比如case 名称.请求url.请求方式.h ...

  5. 洛谷 P1226 【模板】快速幂||取余运算 题解

    Analysis 快速幂模板,注意在最后输出时也要取模. 快速幂模板 inline ll ksm(ll x,ll y) { ll ans=; ) { ) { ans*=x; ans%=k; } x*= ...

  6. python中序列的操作

    Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...

  7. vue之大文件分段上传、断点续传

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  8. vue引入nutUI

    这段时间需要做一个移动端项目,我需要选着用哪个UI库,其它的UI库没多看,看了看mintUI和nutUI,感觉mintUI的功能要比nutUI的功能少点,mintUI是饿了么团队开发的,而nutUI是 ...

  9. python中的函数---函数应用

    每种编程语言中,都需要函数的参与,python同样也不例外.函数是集成的子程序,是算法实现的最小方法单位,是完成基本操作的手段的集合.编程中能够灵活应用函数,提高程序设计的简单化:实现代码应用的复用化 ...

  10. osg::Group源码

    osg::Group源码 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library i ...