Django入门
Django入门
一.新建index页面
1.新建项目
使用manage.py创建一个blog这里会出现新的一个应用
python manage.py startapp blog
文件名 | 描述 |
---|---|
init.py | 告诉Python 这是一个包 |
apps.py | 在新的Django 版本中新增,用于应用程序的配置。 |
admin.py | 映射models 中的数据到Django 自带的admin 后台 |
models.py | 数据模型——对应数据库的相关操作 |
tests.py | 单元测试 |
views.py | 视图函数(即MVC 中的控制器)——控制向前端显示哪些数据。 |
migrations | 这是一个包,用于记录models中的数据变更 |
2.把这个应用加入到Django的项目中
在项目文件的setting.py中。将应用名称(blog)添加到元组的末尾,如下所示。
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
······
'blog',
)
3.新建一个urls
在项目的urls文件中配置我们blog应用的index页
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/',views.archive),
path('index/',views.index)
]
4.编写对应的index函数
在blog应用的view文件新建
def index(request):
return HttpResponse("Hello Django!")
5.请求路径
在浏览器输入以下就可以访问
http://localhost:8000/index/
http://127.0.0.1:8000/index/
二.新建一个模板index页面
对于一个页面可以使用更加好的模块来展示,可以使用html展示
1.新建一个html
在对应目录创建templates/index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Django Page</title>
</head>
<body>
<h1>Hello Django!</h1>
</body>
</html>
2.修改view中返回数据
原先
def index(request):
return HttpResponse("Hello Django!")
修改之后
from django.shortcuts import render
def index(request):
return render(request,"index.html")
这里使用Django模块的render函数
Django 工作流
- 1.urls.py 中urlpatterns添加路径,确定跳转的项目函数
- 2.在项目的新增对应的函数
- 3.在函数中加载已有 html文档
三.开发模式
MTV开发模式:也就是把数据和表现逻辑分割开的逻辑
MVC模式
Model-View-Controller(MVC):
-
Model 代表数据存取层,
-
View 代表的是系统中选择显示什么和怎么显示的部分
-
Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。
-
但是在Django中使用的是MTV模式:
是模型(Model)、模板(Template)和视图(Views),
四.新建一个Blog
1.新建一个博客模型
使用model 文件用于存放数据模型,这里使用了blog的模型
class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
这里新建了一个BlogPost类,并添加了博客里面的属性。
- title:用CharField类型,并限制了最大长度
- body:使用TextField类型
- timestamp:使用dataTimeField 类型
2.Model转换成中间件
在项目cmd中输入
python manage.py makemigrations
会出现以下结果
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model BlogPost
可以看到blog项目新建了一个BlogPost的类
3.数据SQLite
Django默认的就是
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/tmp/mysite.db', # use full pathname to avoid confusion
}
}
3.生成blog的表
然后Django需要使用上面给出的链接信息来连接数据库,这里需要设置应用程序需要的表。
python manage.py syncdb
这里输入之后cmd表示syncdb命令不存在。因为Django1.9之后该命令被删除,所以,需要使用migrate命令替代syncdb
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
4.注册数据库表
在admin账号登录之后是没有看到用户类的
需要在blog项目的admin文件中注册
from blog.models import BlogPost
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')
admin.site.register(BlogPost,BlogPostAdmin)
在之前的注册的模块是BlogPost,所以在admin的页面展示的也是BlogPost
5.配置html模板
在应用中新建一个archive.html文件用于存放模板
\blog\templates\archive.html
文件内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- archive.html -->
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
<hr>
{% endfor %}
</body>
</html>
6.配置urls路径
修改项目的urls路径
from blog.views import archive
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/',archive)
]
7.虚假视图展示
在view文件中配置
def archive(request):
post = BlogPost(title='mocktitle', body='mockbody',
timestamp=datetime.now())
return render_to_response('archive.html', {'posts': [post]})
使用虚假视图验证之后发现没有问题就可以换成真实视图
8.真实视图展示
在view文件修改成
from blog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
return render_to_response('archive.html', {'posts': posts})