zoukankan      html  css  js  c++  java
  • djngo未整理

    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="0"> 男 </p>
        <p><input type="radio" name="sex" value="1"> 女 </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")




  • 相关阅读:
    程序员优化程序流程
    iOS开发优化的25个方案
    彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题转
    svn服务器搭建与配置
    mac 显示隐藏文件夹
    HDU 2276 Kiki & Little Kiki 2 矩阵构造
    HDU 3306 Another kind of Fibonacci ---构造矩阵***
    HDU 1575 Tr A----矩阵相乘题。
    矩阵的模板----
    HDU 1757 矩阵求第n的递推式
  • 原文地址:https://www.cnblogs.com/hoganhome/p/11673229.html
Copyright © 2011-2022 走看看