Django入门笔记2-项目入手

Django入门笔记2-项目入手

安装项目环境

requirement.txt 用于记录项目所安装的包

Django==2.2
django-concurrency==1.4
Pillow==6.2.1
pytz==2019.3
six==1.13.0
sqlparse==0.3.0
psycopg2==2.7.1

安装项目包

pip freeze > requirements.txt

通过django-admin startproject 创建项目

django-admin startproject name

通过python manage.py startapp创建应用

python manage.py startapp name

项目目录

mysite/
    manage.py # 启动server
    mysite/ #项目配置目录 django-admin startproject 与项目同名
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
		polls/ #项目应用目录 python manage.py startapp 应用名
		    __init__.py
			  admin.py
			  apps.py
		    migrations/
        __init__.py
		    models.py
		    tests.py
		    views.py

通过修改项目目录下settings.pyINSTALLED_APPS 为项目添加应用

INSTALLED_APPS = (
    ... # 内置应用已省略
    'polls',
)

项目目录

mysite/
    manage.py # 启动server
    mysite/ #项目配置目录 django-admin startproject 与项目同名
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
		polls/ #项目应用目录 python manage.py startapp 应用名
		    __init__.py
			  admin.py
			  apps.py
		    migrations/
        __init__.py
		    models.py
		    tests.py
		    views.py

项目路由编写

详细内容见官方文档

官方文档URL

在项目文件夹下的urls.py文件中编写路由

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Django 3.0 后编写路由无需使用正则表达式了

path('**route访问路由**','**view对应视图**','kwarg','name命名空间') 前两个为必须参数

view 参数可为include( ) ,该函数采用完整的 Python 导入路径到达该位置应“包括”的另一个URLconf模块,admin.site.urls 是唯一例外(admin为内置模块)

path('articles/<slug:title>/<int:section>/', views.section, name='article-section')

<slug:title>/<int:section> 用于限定url中参数类型

有关URL详细内容参考

官方文档URL

连接数据库与创建数据模型

通过修改项目目录下settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'demo',
        'USER': 'demo',
        'PASSWORD': 'demo@12345',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

并按照对应驱动连接数据库(可见后文常见数据库连接)

详细配置参考

官方文档DataBase

通过编写应用目录下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)

通过自定义类继承models.Model 实现数据库字段

每一个类代表与一张数据库表一一对应,每一个属性对应着数据库表中的字段

每个字段都是 Field 类的实例,每个模型被表示为django.db.models.Model 类的子类

详细类型及参数参看

官方文档Field 类

同时可以使用 ForeignKey 定义关系,Django 支持所有常用的数据库关系:多对一、多对多和一对一。

初始化数据库与模型

python [manage.py](<http://manage.py/>) migrate

migrate负责应用和撤销迁移,主要用于数据库创建迁移时操作

python [manage.py](<http://manage.py/>) makemigrations

makemigrations基于模型的修改创建迁移,主要用于模型创建更改时操作。

内置后台管理页面

创建一个管理员账号

创建一个能登录管理页面的用户,运行下面的命令:

python manage.py createsuperuser

键入你想要使用的用户名,然后按下回车键:

然后提示你输入想要使用的邮件地址:

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Username: admin
Email address: admin@example.co
Password: **********
Password (again): *********
Superuser created successfully.

启动开发服务器

python manage.py runserver

登陆页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6xzMRoG-1596700902713)(https://i.loli.net/2020/08/03/UZRMKsH9EYiWg7m.png)]

管理页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JUo5t9h0-1596700902715)(https://i.loli.net/2020/08/03/9k1LjmB8nzEFy6N.png)]

在管理页面中加入应用功能

在应用目录下的admin.py中 通过 admin.site.register (模型) 引入模型

from django.contrib import admin

from .models import Question

admin.site.register(Question)

详细内容参考官方文档

官方文档

接下来将介绍 model与数据库 API 以及 基于 Restful Framework 的 Serializer 序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值