Django3 创建项目/创建app/启动项目/设置路由/创建用户=2

一、创建运行项目

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()函数有四个参数:routeview必须要有,kwargsname可选
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

def str是此类的实例被打印出来的时候会调用的函数,这里将其复写为其中的一个字段。

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的时候会显示我们定义让其显示的列:

posted @ 2020-10-08 22:33  那个白熊  阅读(589)  评论(0编辑  收藏  举报