【Django笔记2】-创建应用(app)与模型(models)
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)的更多相关文章
- 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表
第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ...
- python之Django学习笔记(二)---Django从工程创建、app创建到表建模在页面的显示
创建工程: 在命令行中切换目录至需要创建工程的目录,然后在命令行中输入如下命令创建djangoTestPro工程 D:\PycharmProjects\untitled\MyTestProject&g ...
- Django 同步数据库的时候app中的models的表没有成功创建
出现 no changes detected python3 manage.py makemigrations --empty blog # blog就是你的app名字,此处要写成自己的app名字 ...
- Django笔记 —— 模型
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django商城项目笔记No.3用户部分-用户模型类
Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...
- Django:学习笔记(2)——创建第一个应用
Django:学习笔记(2)——创建第一个应用 创建应用 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定.Django 自带一个工具,可以帮你生成应用的基础目录结构, ...
- Django学习手册 - 创建Django工程项目以及APP
前置步骤: 下载python,django 并且安装好 python 解释器以及django模块. 整体步骤阐述: 创建django工程项目 步骤一:进入安装的python目录 步骤二:输入创建工程的 ...
- react系列笔记1 用npx npm命令创建react app
react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ...
随机推荐
- macOS 升级后导致 dart bug
macOS 升级后导致 dart bug macOS 10.15.5 $ demo_app git:(master) flutter doctor # /Users/xgqfrms-mbp/Docum ...
- macOS & uninstall app
macOS & uninstall app https://support.apple.com/en-hk/guide/mac-help/install-and-uninstall-other ...
- Apache HTTP Server & WS (websockets)
Apache HTTP Server & WS (websockets) Apache HTTP Server Version 2.4 https://httpd.apache.org/doc ...
- vue的filter用法,检索内容
var app5 = new Vue({ el: '#app5', data: { shoppingList: [ "Milk", "Donuts", &quo ...
- Flutter: Dismissible 通过在指示的方向上拖动来解除的Widget
API class _MyHomeState extends State<MyHome> { @override Widget build(BuildContext context) { ...
- 星盟全球投资副总裁DENIEL SOIBIM:如何激发创造力
丹尼尔·索比姆毕业于加州理工大学,2005年通过创建投资俱乐部对潜力公司进行天使投资,获得了美国Blue Run高层的重视,任营收专家评估师,为Blue Run项目提案做风险评估,09年与泰勒·亚当斯 ...
- iframe重定向问题
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
- TERSUS无代码开发(笔记06)-简单实例手机端页面设计
手机端的设计 1.页面说明 2.默认页面===>提交请假单(上面页面双击进入,页面主要编辑区) 2.1默认页面===>提交请假单===>头部区(页面部份主要编辑区01) 2.1.1默 ...
- [计算机图形学]绘制填充模型:重心坐标、z-buffer
目录 一.点乘和叉乘 0. 向量表示 1. 点乘 2.叉乘 2.1 坐标运算方式 2.2 向量运算方式 2.3 叉乘的用途 二.Bounding Box 三.重心坐标 四.z-buffer 五.总结 ...
- KnowRbao_uni-app
uni-app开发项目模板 主要的代码如下: pages.json 这里是添加页面的路径代码还可以设置标题: { "pages" : [ //pages数组中第一项表示应用启动页, ...