1,创建应用(app)

​ 一个完善的网站需要许多功能提供不同的服务。如果所有的功能都在一个文件中,不利于项目多人共同开发,以及后续的维护。此时可以针对一个要实现的功能,创建一个app,将多个app结合起来完成网站的建设。不同app之间可以通过url进行跳转。

  • 在命令行中输入以下代码创建一个app

    python manage.py startapp app1

    创建app后的目录树结构为

    TEST1
    │ manage.py

    ├─app1
    │ │ admin.py
    │ │ apps.py
    │ │ models.py
    │ │ tests.py
    │ │ views.py
    │ │ __init__.py
    │ │
    │ └─migrations
    │ __init__.py

    ├─templates
    │ hello.html

    └─test1
    │ asgi.py
    │ settings.py
    │ urls.py
    │ views.py
    │ wsgi.py
    │ __init__.py

    └─__pycache__
    settings.cpython-36.pyc
    urls.cpython-36.pyc
    views.cpython-36.pyc
    wsgi.cpython-36.pyc
    __init__.cpython-36.pyc
  • 在settings.py中对新创建的app进行注册

    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1' #新添加的
    ]
  • 修改app1中的views.py,并在templates中创建app1.html,实现预想的效果

    from django.shortcuts import render
    
    # Create your views here.
    def functionApp1(request):
    return render(request, 'app1.html')
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body> <center>
    欢迎使用app1
    </center> </body>
    </html>
  • 为app中的views.py分配路由映射,这里不同与在原来的项目主文件中分配路由映射(只需要一步),这里分配路由映射需要两步。

    • 在app1中创建urls.py,之后分配路由映射

      from django.conf.urls import url
      from . import views urlpatterns = [
      url(r'^$', views.functionApp1)
      ]
    • 在test1(最初生成的文件夹)中分配路由映射

      from django.contrib import admin
      from django.urls import path
      from django.conf.urls import url, include
      from . import views urlpatterns = [
      path('admin/', admin.site.urls),
      url(r'^hello/$', views.HelloWorld),
      url(r'^app1/$', include('app1.urls')) #新添加的
      ]
  • 此时打开链接 http://127.0.0.1:8001/app1/ ,可以发现已经是app1的内容了

  • 也可以在app页面与原来的页面相互建立链接,实现页面的跳转。

    hello.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body> hello world! <br>
    {{name}} <br> <!-- url跳转 -->
    <a href="https://www.cnblogs.com/tensorzhang/">
    tensor_zhang的博客园
    </a><br> <a href="http://127.0.0.1:8001/app1/">
    应用1
    </a> <!-- 提交文件 -->
    <form>
    <input type="file" name="myfile">
    <input type="submit" value="提取文件">
    </form> </body>
    </html>

    app1.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body> <center>
    欢迎使用app1
    </center> <a href="http://127.0.0.1:8001/hello/">
    欢迎界面
    </a> </body>
    </html>



2,Models模块

​ django通过models模块与数据库进行互动。

  • 打开app1中的models.py文件,输入以下代码:

    from django.db import models
    
    # Create your models here.
    class Article(models.Model):
    title = models.CharField(max_length=30)
    content = models.TextField()
  • 同步数据库,将models中创建的新类以及其属性同步到数据库中,在cmd中输入:

    python manage.py makemigrations
    python manage.py migrate

    会发现在app1/migrations中会生成一个文件0001_initial.py,里面是models.py中Article的信息,此时的路径是:

    TEST1
    │ manage.py

    ├─app1
    │ │ admin.py
    │ │ apps.py
    │ │ models.py
    │ │ tests.py
    │ │ urls.py
    │ │ views.py
    │ │ __init__.py
    │ │
    │ ├─migrations
    │ │ │ 0001_initial.py
    │ │ │ __init__.py
    │ │ │
    │ │ └─__pycache__
    │ │ __init__.cpython-36.pyc
    │ │
    │ └─__pycache__
    │ admin.cpython-36.pyc
    │ models.cpython-36.pyc
    │ urls.cpython-36.pyc
    │ views.cpython-36.pyc
    │ __init__.cpython-36.pyc

    ├─templates
    │ app1.html
    │ hello.html

    └─test1
    │ asgi.py
    │ settings.py
    │ urls.py
    │ views.py
    │ wsgi.py
    │ __init__.py

    └─__pycache__
    settings.cpython-36.pyc
    urls.cpython-36.pyc
    views.cpython-36.pyc
    wsgi.cpython-36.pyc
    __init__.cpython-36.pyc
  • 在后台管理的展现通过修改admin.py进行修改

    from django.contrib import admin
    from .models import Article # Register your models here.
    admin.site.register(Article)
  • 之后进入django的admin界面,创建并登陆超级用户后就可以看到创建出来的新选项(mysql后台打印tables也会发现多出来了一个)

    # 创建超级用户
    python manage.py createsuperuser
    # 输入 用户名、 邮箱(可跳过)、 密码

【Django笔记2】-创建应用(app)与模型(models)的更多相关文章

  1. 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表

    第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...

  2. 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表

    第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ...

  3. python之Django学习笔记(二)---Django从工程创建、app创建到表建模在页面的显示

    创建工程: 在命令行中切换目录至需要创建工程的目录,然后在命令行中输入如下命令创建djangoTestPro工程 D:\PycharmProjects\untitled\MyTestProject&g ...

  4. Django 同步数据库的时候app中的models的表没有成功创建

    出现  no  changes detected python3 manage.py makemigrations --empty blog # blog就是你的app名字,此处要写成自己的app名字 ...

  5. Django笔记 —— 模型

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  6. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  7. Django:学习笔记(2)——创建第一个应用

    Django:学习笔记(2)——创建第一个应用 创建应用 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定.Django 自带一个工具,可以帮你生成应用的基础目录结构, ...

  8. Django学习手册 - 创建Django工程项目以及APP

    前置步骤: 下载python,django 并且安装好 python 解释器以及django模块. 整体步骤阐述: 创建django工程项目 步骤一:进入安装的python目录 步骤二:输入创建工程的 ...

  9. react系列笔记1 用npx npm命令创建react app

    react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ...

随机推荐

  1. CSS :nth-of-type() bug

    CSS :nth-of-type() bug .tools-hover-box-list-item { pointer-events: auto; box-sizing: border-box; di ...

  2. 1+X 证书制度

    1+X 证书制度 教育部职业技术教育 http://www.cvae.com.cn/zgzcw/tzgg/202001/c0ddd6c87e6c42839f8cc3e09a2dce89.shtml 2 ...

  3. BattleBots

    BattleBots 搏茨大战 https://battlebots.com/ BiteForce https://www.youtube.com/watch?v=06lyUXuQT_Y xgqfrm ...

  4. git stash & git stash pop

    git stash & git stash pop $ git checkout feature/select-seat-system $ git checkout feature/app-d ...

  5. ip/udp/tcp包 学习

    /** * 以太网 */ class Ethernet { static readonly size = 14; get Destination(): string { return [ this.v ...

  6. 为什么10月上线的NGK Global即将燎原资本市场

    近日据社区透露,NGK Global将在10月全面启动,数据公开透明,人人可以参与运营监管. 现在,区块链经济已经处于爆发前夜.金融行业的探索领先一筹,而其他行业的应用正在快速展开.区块链行业应用头部 ...

  7. C++算法代码——选举学生会

    题目来自:https://www.luogu.com.cn/problem/P1271 题目描述 学校正在选举学生会成员,有 n(n\le 999)n(n≤999) 名候选人,每名候选人编号分别从 1 ...

  8. Java中Singleton的三种实现方式解析

    一.什么是Singleton? <设计模式>的作者.Eclipse和 Junit 的开发者 Erich Gamma 在它的理论体系中将 Singleton 定义为仅仅被实例化一次的类.在当 ...

  9. 新手不能忽视的MFC编程之CString

    首发文章 | 公众号:lunvey 作为一个新手,刚接触C++没多久.赶鸭子上架完成项目,鉴于之前有几年编程基础,所以很快就接触到了界面开发,由于用的是VC++6.0,所以自然而然就将MFC作为图形界 ...

  10. 【OI向】快速傅里叶变换(Fast Fourier Transform)

    [OI向]快速傅里叶变换(Fast Fourier Transform) FFT的作用 ​ 在学习一项算法之前,我们总该关心这个算法究竟是为了干什么. ​ (以下应用只针对OI) ​ 一句话:求多项式 ...