django之表设计、路由层等

图书管理系统表的设计

from django.db import models

# Create your models here.
class Book(models.Model):
    title = models.CharField(max_length=32)
    # 总共八位 小数占两位
    price = models.DecimalField(
        max_digits=8,decimal_places=2)

    # 书和出版社是一对多的关系  外键字段键在多的一方
    publish = models.ForeignKey(to='Publish')  # to指定跟谁是外键关联的  默认关联的是表的主键字段
    """
    ForeignKey字段  django orm在创建表的时候 会自动给该字段添加_id后缀
    """
    # 书和作者是多对多的关系  外键字段建在任何一方都可以  但是 推荐你建在查询频率比较高的一方
    authors = models.ManyToManyField(to='Author')
    """authors字段仅仅是一个虚拟字段 不会再表中展示出来  仅仅是用来告诉django orm 书籍表和作者表示多对多的关系
        自动创建第三张表
    """

class Publish(models.Model):
    name = models.CharField(max_length=32)
    addr = models.CharField(max_length=255)

class Author(models.Model):
    name = models.CharField(max_length=32)
    phone = models.BigIntegerField()
    # 一对一字段 建在哪张表都可以  但是推荐你建在 查询频率比较高的那张表
    author_detail = models.OneToOneField(to='AuthorDetail')
    """
        OneToOneField字段  django orm在创建表的时候 会自动给该字段添加_id后缀

        """

class AuthorDetail(models.Model):
    addr = models.CharField(max_length=255)
    age = models.IntegerField()

路由层

urls.py  路由与视图函数对应关系  >>>     路由层

无名分组与有名分组

反向解析
    根据某一个东西 动态解析出一个结果 该结果可以直接访问对应的url

    url(r'^test_add/', views.testadd,name='xxx')

    前端解析
        {% url 'xxx' %}

    后端解析
        from django.shortcuts import render,HttpResponse,redirect,reverse
        url = reverse('xxx')

    无名分组反向解析
        url(r'^test_addsajdsjkahdkjasjkdh/(\d+)/', views.testadd,name='xxx'),

        前端解析
            <a href="{% url 'xxx' 1 %}">222</a>

        后端解析
            url = reverse('xxx',args=(1,))

    有名分子反向解析
        url(r'^test_addsajdsjkahdkjasjkdh/(?P<year>\d+)/', views.testadd,name='xxx'),
        前端解析
            <a href="{% url 'xxx' 1 %}">222</a>

            <a href="{% url 'xxx' year=1 %}">222</a>

        后端解析
            url = reverse('xxx',args=(1,))

            url = reverse('xxx',kwargs={'year':123})

    作业:用无名分组或者有名分组+反向解析 完成数据的编辑功能
        url(r'^edit_user/(\d+)/',views.edit_user,name='edit')

        user_queryset = models.User.objects.all()

        {% for user_obj in user_queryset %}
            <td>
                <a href="{% url 'edit' user_obj.pk %}">编辑</a>
                <a>删除</a>
            </td>
        {% endfor %}

        def edit(request,edit_id):
            pass

    注意 反向解析的别名 一定不要重复
路由分发(******)

    django里面的app可以有自己的static文件,templates文件夹,urls.py(******)   

    项目名下面的urls.py不再做路由与视图函数对应关系
    而是做一个中转站  只负责将请求分发到不同的app中
    然后在app的urls.py完成路由与视图函数的对应关系
    from django.conf.urls import url,include

    url(r'^app01/',include(app01_urls)),
    url(r'^app02/',include(app02_urls))

名称空间(了解)
    总路由
        url(r'^app01/',include('app01.urls',namespace='app01'))
        url(r'^app02/',include('app02.urls',namespace='app02'))

        print(reverse('app01:index'))
        print(reverse('app02:index'))

    通常情况下 起别名的时候 前面可以加上你的应用名
    

伪静态

将动态网页假装成是静态的

这样做的目的是为了提高搜索引擎的SEO查询优先级

搜索在收录网站的时候 会优先收录看上去像是静态文件的资源

但是无论你怎么使用伪静态进行优化 你也干不过RMB玩家

虚拟环境

通常针对不同的项目 只会安装该项目所用的模块 用不到的一概不装

不同的项目有专门的解释器环境与之对应

每创建一个虚拟环境 就类似于重新下载了一个纯净的python解释器

虚拟环境不要创建太多个

django版本区别

django1.x
django2.x

区别1:
    urls.py中1.x用的是url,而2.x用的是path
    并且2.x中的path第一个不支持正则表达式,写什么就匹配什么
    如果你觉得不好用,2.x里面还有re_path 这个re_path就是你1.x里面的url

原文地址:https://www.cnblogs.com/michealjy/p/11723327.html

时间: 2024-07-31 04:03:59

django之表设计、路由层等的相关文章

☆Django☆---表的设计 生命周期 分组 解析 路由层 视图层

图书管理系统的 表 设计 图书管理系统分别有三张表 作者表 书籍表 出版社表  他们 的对应关系为 如何在 Django中建立表与表之间的关系? 首先我们需要在 app文件里 的 models创建出 这三张表 然后做对应关系 复习Django的操作: 1.创建好app后需要 将app添加到INSTALLED_APP = [] 里面 2.在Django中添加mysql数据库 >>>点击 侧边栏中的 database  >>>然后左上角的加号 >>> 点击

django路由层(一)

Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 我们就是以这种方式告诉Django,遇到哪个URL的时候,要对应执行哪个函数. URLconf配置 基本格式: 示例: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^test', views.test), url(r'^testadd

Django orm关系表的创建 、路由层以及视图层

一.Django 表关系的创建 1.表的对应关系 一对多 多对多 一对一 2.如何判断表的对应关系 利用换位思考的方式,分别站在两张表的角度上去思考 这里比如我们以图书管理系统为例来创建几个简单的表 图书表 出版社表 作者表 为了方便演示,这里我们就强行规定了表之间的关系: 图书和出版社是一对多的外键关系,一对多外键关系 将外键字段建在多的哪一张表上 图书与作者之间是多对多的外键关系,多对多的外键关系 外键字段无论建在那张表都可以,但是推荐你建在查询频率高的那张    表上 作者与作者与作者详情

Django 基础 之路由层

1.路由层简单配置 (1)path方法 写固定的url. (2)re_path方法 可以正则规则 例: urlpatterns = [ path('admin/', admin.site.urls), path('articles/2003/', views.special_case_2003), re_path(r'^articles/([0-9]{4})/$', views.year_archive), re_path(r'^articles/([0-9]{4})/([0-9]{2})/$'

Django的路由层和视图层

django orm中表与表之间建关系            一对多  ForeignKey(to='Publish')                        一对一  OneToOneField(to='AuthorDetail')                        多对多  ManyToManyField(to='Author') 注意:                前面两个关键字会自动再字段后面加_id                最后一个关键字 并不会产生实际字段

DJANGO入门系列之(Django请求生命周期and路由层)

昨日回顾 1 orm 创建表,新增字段,修改,删除字段,不能创建数据库 -字段属性phone=models.CharField(max_length=64,null=True) -null=True 代表该列可以为空 2 数据的增删改查 -增(1):User.objects.create(address='') -增(2):实例化产生一个user对象,user对象的save方法 -删:User.objects.filter(id=1,name='lqz').first().delete() -删

Django之路由层与视图层

Django之路由层与视图层 路由层 urlpatterns = [ url(r'^admin/',admin.site.urls), url(r'^$',views.home), # 网页首页路由 url(r'^test/$',views.test), url(r'^testadd/$',views.testadd), url(r'',views.error) # 网页不存在页面 ] # 注意:第一个参数是正则表达式,匹配规则按照从上往下依次匹配,匹配到一个之后立即停止,直接执行对应的视图函数

Django路由层与视图层、pycharm虚拟环境

一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实际工作中一个项目多人协作完成提供了便利:即每个人单独建一个Django项目写一个APP,最后新建一个Django项目将所有APP汇总,然后settings中注册各个APP,再修改一下其他配置即可. 路由层大致内容如下: from django.conf.urls import url from dj

Django框架-路由层

Django框架-路由层 一.URL配置(URLconf) 1.基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 2.参数说明 正则表达式:一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数:可选的要传递给视图函数的默认参数(字典形式) 别名:一个可选的name参数 二.关于正则表达式(来自官方文档) from dj