zoukankan      html  css  js  c++  java
  • 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的时候会显示我们定义让其显示的列:

  • 相关阅读:
    关于《大道至简-软件工程实践者的思想》的读书笔记(二)
    关于《大道至简-软件工程实践者的思想》的读书笔记(一)
    Android源码项目目录结构
    Android源码目录结构详解
    项目阶段总结
    站立会议07(二期)
    站立会议06(二期)
    站立会议05(二期)
    站立会议04(二期)
    站立会议03(二期)
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/13783090.html
Copyright © 2011-2022 走看看