【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 # 输入 用户名、 邮箱(可跳过)、 密码
行动是治愈恐惧的良药,而犹豫拖延将不断滋养恐惧。