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. FTP 与 SSH 的安全性对比, 以及FTP,SSH,SFTP,SCP 的关系简单解析!

    FTP 与 SSH 的安全性对比? ftP: http://baike.baidu.com/subview/369/6149695.htm TCP/IP协议中,FTP标准命令TCP端口号为21,Por ...

  2. Tumult Hype

    Tumult Hype hype generated script https://tumult.com/hype/documentation/ HTML5 animation editor http ...

  3. Linux 创建/编辑/查看 文件/文件夹的命令汇总

    Linux 创建/编辑/查看 文件/文件夹的命令汇总 Linux 创建文件的命令Linux,编辑文件的命令Linux 查看文件的命令,touch,vim,vi,gedit,cat,ls -a, ls ...

  4. what's the difference amount of pdf, epub, and mobi format

    what's the difference amount of pdf, epub, and Mobi format What is the difference between pdf, epub ...

  5. 动态规划算法 All In One

    动态规划算法 All In One dynamic programming leetcode https://leetcode.com/tag/dynamic-programming/ https:/ ...

  6. Stack Overflow & Segment Fault

    Stack Overflow & Segment Fault https://stackoverflow.com/ https://stackoverflow.com/users/593446 ...

  7. serverless & front end

    serverless & front end Cloud Functions or Functions as a Service (FaaS) https://serverless.css-t ...

  8. SVG namespace & preview bug

    SVG namespace & preview bug error This XML file does not appear to have any style information as ...

  9. Google 灭霸 彩蛋

    Google 灭霸 彩蛋 在Google中搜索"灭霸",然后在右侧点击的"无限手套",页面的一些搜索项就会随机性像沙子一样的消失(后面统称沙化效果),特别的炫酷 ...

  10. 苏黎世财经对话区块链专家,NGK如何利用时间价值实现自身的垂直扩张?

    近日,苏黎世财经日报联合法兰西金融等多家知名媒体,专访了NGK. 苏黎世财经日报专栏记者玛科尔德表示,随着NGK DeFi的明星代币BGV登上去中心化金融的舞台,它千倍的收益率让生态投资者趋之若鹜. ...