一、创建运行项目
1.1 安装django
// 安装最新版本(默认)
pip insatll django
// 安装指定版本1.2.3
pip install django=1.2.3
1.2 新建项目/app
// 新建项目
django-admin startproject <project-name>
// 新建app
django-admin startapp <app-name>
项目结构:
比如`django-admin startproject mysite`之后会产生一个`mysite`文件夹
└─mysite # 文件夹,名字与项目无关,随时随便改
│ manage.py # 与项目交互的命令行实用工具
│
└─mysite # 就是一个python包,名字就是包名
asgi.py # web服务器asgi切入点
settings.py # 全局配置
urls.py # 路由配置
wsgi.py # web服务器wsgi切入点
__init__.py # 空文件,用于标识这是python包
1.3 启动项目
# 按默认设置启动
python manage.py runserver
# 指定端口启动
python manage.py runserver :8080
# 指定IP、端口启动
# 0是0.0.0.0的缩写,你可以指定一个公网IP
python manage.py runserver 0:8080
在浏览器访问:localhost:8000
即可:
1.4 新建一个app
# 新建一个polls应用
django-admin startapp polls
创建后目录结构如下:
│ db.sqlite3
│ manage.py
│
├─mysite
│ │ asgi.py
│ │ settings.py
│ │ urls.py
│ │ wsgi.py
│ │ __init__.py
│ │
│ └─__pycache__
│ settings.cpython-37.pyc
│ urls.cpython-37.pyc
│ wsgi.cpython-37.pyc
│ __init__.cpython-37.pyc
│
└─polls
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ views.py
│ __init__.py
│
└─migrations
__init__.py
然后我们将polls目录下的views.py文件改为:
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world!")
然后在polls(没有则新建)目录下的urls.py中添加路由
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
再在mysite/urls.py中添加路由:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
然后就可以python manage.py runserver
启动了,
访问主页查看:
path()函数有四个参数:route
、view
必须要有,kwargs
、name
可选
route:自定义一个访问路径,是访问网站时需要写的地址
view:指定访问视图
kwargs:可选,可以给view传递一个字典
name:可选
二、使用数据库
2.1 配置数据库
Django默认的数据库是SQLite,如果你想其他数据库,也可以进行配置。
如果使用默认SQLite,项目会在配置文件指定位置生成一个<db_name>.sqlite3文件,
如果你没有使用默认数据库,则需要配置用户名、密码、和主机等信息。
2.2 设置时区
在mysite/settings.py,设置时区TIME_ZONE为Asia/shanghai
2.3 创建Model
在polls的models.py中添加以下内容:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
2.4 添加app声明
在mysite/setting.py文件中的INSTALLED_APPS添加我们新建的项目名等信息:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
2.5 创建数据库
使用这个命令可以根据Models创建必要的数据库、表等
# 告诉Django我们的Models发生了变化,准备更新数据库
python manage.py migrations polls
# 可以使用这个命令查看对应的sql语句
# python manage.py sqlmigrate polls 0001
# 应用所有更改
python mamage.py migrate
2.6 更改models文件
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
2.7 创建管理用户
python manage.py createsuperuser
登录界面:
登录后界面:
将poll应用添加到管理页面:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
改完时区和语言后,界面会自动切换:
# 在mysite/setting.py中
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
我们可以决定在管理页面显示的内容,当我们做以下修改:
from django.contrib import admin
from .models import showInfo
class showInfoAdmin(admin.ModelAdmin):
list_display = ('name', 'addr')
admin.site.register(showInfo, showInfoAdmin)
上述注册代码也可以采用注解的方式:
from django.contrib import admin
from .models import showInfo
@admin.register(showInfo)
class showInfoAdmin(admin.ModelAdmin):
list_display = ('name', 'addr')
# 取消注释下一行,可控制管理后台详情页面显示指定内容
# fields = ('name',)
再点进show infos的时候会显示我们定义让其显示的列: