django 项目实战-基础项目
我们首先来创建一个django基础项目,来熟悉django项目的开发流程,内容如下:
- 创建django项目
- 创建django应用
- 创建模型
- 创建视图
- 配置url
- 创建超级用户
创建django项目
创建django项目比较简单,在命令行使用如下命令:
django-admin startproject mysite
项目结构如下:
这些文件的含义:
- 外部mysite/根目录只是项目的容器。它的名字对Django来说无关紧要; 你可以将它重命名为你喜欢的任何东西。
- manage.py:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以manage.py在django-admin和manage.py中阅读有关的所有详细信息 。
- 内部mysite/目录是项目的实际Python包。它的名称是您需要用来导入其中任何内容的Python包名称(例如mysite.urls)。
- mysite/init.py:一个空文件,告诉Python该目录应该被视为Python包。如果您是Python初学者,请阅读官方Python文档中有关包的更多信息。
- mysite/settings.py:此Django项目的设置/配置。 Django设置将告诉您有关设置如何工作的所有信息。
- mysite/urls.py:这个Django项目的URL声明; 您的Django支持的站点的“目录”。您可以在URL调度程序中阅读有关URL的更多信息。
- mysite/wsgi.py:与WSGI兼容的Web服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用WSGI进行部署。
创建django应用
我们将目录定位到外层mysite目录下面,使用如下命令创建一个django应用:
python manage.py startapp myapp
应用结构如下:
应用文件的含义如下:
- myapp/migrations: 会在这里生产迁移文件,根据这些文件生成和修改数据库表。
__init__.py
: 一个空文件,告诉Python该目录应该被视为Python包。- admin.py : 在这个文件中注册模型,会在admin后台自动维护这些模型。
- apps.py : 应用配置,指定应用名称。
- models.py : 在这里定义数据模型.
- tests.py : 单元测试。
- views: 视图文件,在该文件中定义视图。
创建django模型
我们在models.py文件中定义模型,每个模型由一个子类表示django.db.models.Model。每个模型都有许多类变量,每个变量代表模型中的数据库字段。这里我们创建一个实现一个任务计划(ToDoList)
from django.db import models
class Task(models.Model):
content = models.CharField(max_length=200)
创建好的模型,我们必须激活它,我们在settings.py
配置文件中配置它。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp'
]
配置django后端数据库
django默认使用本地sqlite数据库,这在实际项目中是不够用的,我们这里使用mysql数据库。在settings.py
文件中配置。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'MyDB',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3308',
}
}
这些参数分别是数据库引擎,数据库名称,用户名,密码,ip地址,端口号(注意:这里我使用的是3308,默认3306)。
生成django数据迁移文件
python manage.py makemigrations myapp
根据这条命令会在migrations目录下面,生成数据迁移文件。注意:只要模型有变化想同步到数据库,我们必须执行先这个命令。
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Task',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.CharField(max_length=200)),
],
),
]
生成django数据库表
python manage.py migrate
这个命令会根据上面的迁移文件,在数据库中创建表,或者更新表。执行完这条命令后,你会看到数据库中,生成如下几个表。
你会看到会有好几个表,除了myapp_task,其他几个表都是系统应用自动生成的。也就是:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp'
]
创建django超级管理员用户
使用下面命令来创建超级管理员用户:
python manage.py createsuperuser
输入用户名、密码、邮箱就可以创建好一个管理员用户了。
启动django本地服务器
django自动了一个本地wsgi服务器,我们可以通过下面命令来启动它。
python manage.py runserver
默认端口是8000,我们可以打开浏览器访问网站。
Performing system checks...
System check identified no issues (0 silenced).
December 05, 2018 - 12:18:21
Django version 2.1.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
进入django管理后台
我们输入:http://127.0.0.1:8000/admin 就可以进入系统后台,输入我们刚才创建的超级用户就可以进入系统后台。这里有用户和用户组的管理。
这个url地址从哪里来的呢?我们会在urls.py
文件中看到如下配置:
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
修改为中文
打开settings.py配置文件,将LANGUAGE_CODE项修改为中文,刷新页面你会看到,变成了中文。
LANGUAGE_CODE = 'zh-Hans'
注册django模型
为了在后台管理Task模型,实现添加、删除、修改等功能,我们需要注册该模型,在admin.py
文件中注册如下:
from django.contrib import admin
from .models import Task
admin.site.register(Task)
这样我们在admin后台就可以维护Task模型了。
创建django视图
在view.py文件中添加如下内容:
from django.http import HttpResponse
def index(request):
return HttpResponse('django 视图')
配置url
在myapp模块中创建一个urls.py文件,内容如下:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
在mysite模块的urls.py文件中包含上述urls.py:
from django.contrib import admin
from django.urls import path, include
from myapp import urls
urlpatterns = [
path('task/', include('myapp.urls')),
path('admin/', admin.site.urls),
]
在浏览器中输入:http://127.0.0.1:8000/task/ 你会看到如下输出:
django 视图
配置django模板
在myapp模块下面创建一个templates目录,下面创建一个index.html文件,内如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
{%for task in task_list%}
<li>{{task.content}}</li>
{%endfor%}
</ul>
</body>
</html>
修改视图
from django.shortcuts import render
from .models import Task
def index(request):
task_list = Task.objects.all()
ctx = {
'task_list': task_list
}
return render(request,'index.html',ctx)
在浏览器中输入:http://127.0.0.1:8000/task/ 你会看到如下输出,(注意这里,我们admin后台已经添加了如下数据)
- 写博客
- 录制课程
- 教育孩子
- 照顾老人
源码下载
更多Django教程
学习更多Django教程