Django(3)

3. 安装Django,初步讲解

3.1 安装Django:

pip install django==安装的版本

3.2 创建项目:

django-admin startproject 项目名
项目结构
pai0805/
├── manage.py
└── pai0805
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

项目目录:

  • manage.py:项目的真理的管理文件,通过他管理整个项目
  • 项目同名文件夹
    • settings.py:项目整体的配置文件夹
    • url.py:项目的URL配置文件
    • wsgi.py:项目与web服务器的入口
    • __init__.py:可添加数据库驱动

3.3 运行服务器

python manage.py runserver

不指定端口默认8000

python manage.py runserver 8080

3.4 成功的界面

在这里插入图片描述

3.5 创建模块

python manage.py startapp 模块名
pai0805
├── db.sqlite3
├── manage.py
├── pai0805
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-35.pyc
│   │   ├── settings.cpython-35.pyc
│   │   ├── urls.cpython-35.pyc
│   │   └── wsgi.cpython-35.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── user
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

user:

  • admin.py:后台管理站点的配置
  • app.py:当前子应用的信息
  • models.py:保存书写的数据库模型
  • test.py:保存开发测试用例的,进行单元测试的
  • views.py:书写逻辑的,保存视图
  • mirgrations:存放数据库的迁移文件

3.6 注册子模块

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 定义子应用
    #'user'
    'user.apps.UserConfig',
]

3.7 简单体验数据库交互

3.7.1 定义表与字段

一张表对应了一个类

models.py中添加类

class UserInfo(models.Model):
    # 定义字符串类型
    
    # 名字
    name = models.CharField(max_length=10)

    # 年龄
    age = models.IntegerField()

    # 电话号码
    phone = models.CharField(max_length=11)
    
    def __str__(self):
        return self.name
    

注意:

  1. 类名对应的是表名
  2. 属性名对应的是字段名
  3. 继承于Model
3.7.2 迁移数据库表
  1. 生成迁移文件

    python manage.py makemigrations
    
  2. 执行迁移文件

    python manage.py migrate
    

    迁移成功并且执行迁移之后,才真正在数据库生成表

3.7.3 数据库的配置
  1. 同名文件夹中setting.py

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',# 数据引擎
            'NAME': 'pai0805',   # 数据库的名字
            'USER': 'root',      # mysql的用户名
            'PASSWORD': 'mysql', # mysql的密码
            'HOST': '127.0.0.1', # mysql的地址
            'PORT': '3306',      # mysql的端口
        }
    }
    
  2. 同名文件夹中__init__.py 中添加驱动

    import pymysql
    
    pymysql.install_as_MySQLdb()
    # 添加驱动,django 的orm可以调用他
    
3.7.4 后台管理站点
python manage.py createsuperuser

输入:

  • 用户名
  • email
  • 密码

修改为中文界面

同名文件夹 中的 setting.py设置

# LANGUAGE_CODE = 'en-us'
# 中文
LANGUAGE_CODE = 'zh-Hans'

# 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
3.7.5 注册模型到后台管理

admin.py

from user.models import UserInfo

# Register your models here.
# 注册你的模型

admin.site.register(UserInfo)

3.8实现网站的用户信息展示

3.8.1定义视图,处理业务

view.py中,创建视图

视图的作用:创建业务逻辑,完成路径–视图的匹配,返回给对应路径的数据或者网页

注意:视图函数只要需要一个参数来接收Django传递过来的参数

from django.http import HttpResponse
def index1(request):
    print("#########")
    print(type(request))
    print(request)
    return HttpResponse('hello world!')
    # return 'hello world!'	
3.8.2配置路由URL

同名文件夹urls.py

  1. 第一种方法

    from user import views
    urlpatterns = [
        url(r'^index1$', views.index),
    ]
    

    导入模版的包,将路径和包中的方法相关了

  2. 第二种方法(分模块再集中)

    1. 在项目所在的同名文件夹的urls里面配置includes()将各个模块的URL加载
    2. 在各个模块的URL里面进行配置URL----VIEWS
    3. 项目同名的urls值完成路由的分发匹配过程

    真正配置路径在各个模块的URL下面

3.9 配置模版文件

3.9.1创建一个名字叫templates的文件夹
3.9.2 配置文件夹的查找路径
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 设置模板的查找路径
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
3.9.3 返回模板到前端

user/views.py文件中

def index2(request):
    # render(request, template_name, context=None, content_type=None, status=None, using=None):
    return render(request,'index.html',{'text':'这是测试上下文'})

templates/index.html文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>hello world!!</h1>

{{ text }}

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值