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. PostCSS All In One

    PostCSS All In One https://postcss.org/ https://www.webpackjs.com/loaders/postcss-loader/ https://gi ...

  2. input composition event All In One

    input composition event All In One input event compositionStart & compositionEnd & compositi ...

  3. website SEO all in one

    website SEO all in one SEO 指标量化 https://www.similarweb.com/zh/top-websites/ demo https://www.similar ...

  4. APP 跳转到支付包小程序

    APP 跳转到支付包小程序 APP选择支付宝支付,会跳转到支付宝小程序再支付 支付包 小程序 我司有自己的APP.生活号,小程序,这种情况下如何和小程序关联,跳转到小程序里去,做到无缝对接? 其实,小 ...

  5. how to get selected option text in javascript

    how to get selected option text in javascript refs https://developer.mozilla.org/en-US/docs/Web/API/ ...

  6. Spring-02 第一个Spring程序

    Spring-02 第一个Spring程序 第一个Spring程序 1.导入依赖 <dependency> <groupId>org.springframework</g ...

  7. 简单比较 @EnableEurekaClient 和 @EnableDiscoveryClient 两个注解

    @EnableEurekaClient 和 @EnableDiscoveryClient 都是让eureka发现该服务并注册到eureka的注解 相同点: 它们都能让注册中心Eureka发现 , 并将 ...

  8. 微信小程序:标签字符串直接变成标签来显示要通过富文本技术

    rich-text标签存在nodes属性直接接受标签字符串

  9. 零信任三大技术之SDP

    SDP概述 SDP Software Defined Perimeter(软件定义边界),2013 年由云安全联盟 CSA提出. SDP 设计基本原则 1.信息隐身:隐藏服务器地址.端口,使之不被扫描 ...

  10. LDAP + Samba 安装配置流程

    LDAP + Samba 安装配置 基础环境:Ubuntu18.04 安装samba root@cky:~# apt install samba smbldap-tools -y 查看版本 root@ ...