栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django

django

第一章 (构建django框架)

建立虛拟环境+django项目的总文件夹建立虛拟环境建立项目project启动开发服务器建立APP小结 第二章(Views and URLconfs)

建立APP注册APP逻辑思路代码 第三章(Templates)

Templates文件夹、静态html逻辑思路代码 第四章(Models)

设置资料库(默认使用SQLite)逻辑思路代码第五章Django API 来与资料库互动 (CRUD)

第一章 (构建django框架) 建立虛拟环境+django项目的总文件夹
mkdir MyDjangoPro    #建立一个名为MyDjangoPro的资料夹

cd MyDjangoPro       #換至剛剛建立的目錄下
建立虛拟环境
python3 -m venv djvenv         #建立虛拟环境

结果如下:

source djvenv/bin/activate     #切换虚拟环境

结果如下:

建立项目project
django-admin.py startproject mysite  #  mysite 为django项目名

mysite项目文件结构如下:

mysite/
├── mysite   
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
启动开发服务器
python manage.py runserver

浏览器输入:http://127.0.0.1:8000/
结果如下:

建立APP
python manage.py startapp trips	     #  trips  为APP名

APP文件结构如下:

trips
├── __init__.py
├── admin.py
├── migrations
├── models.py
├── tests.py
└── views.py
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

	#这里是注册APP
    'trips',
)
小结

mysite项目 包含 一个mysite配置文件夹 + trips APP文件夹

mysite
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── trips
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── manage.py
第二章(Views and URLconfs) 建立APP
python manage.py startapp trips	     #  trips  为APP名
注册APP

打开 mysite/settings.py,找到 INSTALLED_APPS,添加 APP名:

逻辑思路

处理 request 的流程如下:

Request:        浏览器  ----->   urls.py ---->   views.py
Response :    浏览器   <----   views.py
说明:
1、浏览器送出 HTTP Request
2、Django 依据 URL Conf 分配至对应的 View
3、View 进行资料库的操作或其他运算,并回传 Http Response 对象
4、浏览器依据 HTTP Response,显示网页画面

代码
# trips/views.py

from django.shortcuts import render
from django.http import HttpResponse		#新增

def hello_world(request):					#新增
    return HttpResponse("Hello World!")
# mysite/urls.py

from django.contrib import admin
from django.urls import path	
from trips.views  import hello_world		#新增

urlpatterns = [								
    path('admin/', admin.site.urls),
    path('hello/', hello_world),			#新增
]

加上 HTML / CSS & 动态内容,views.py改为下面代码

# trips/views.py

from django.shortcuts import render
from django.http import HttpResponse
from datetime import datetime
def hello_world(request):
    output = """
        
        
            
            
            
                Hello World! {current_time}
            
        
    """.format(current_time=datetime.now())         #   datetime.now() 结果:取得现在的时间2022-03-15 14:49:32.434372

    return HttpResponse(output)

"""
知识点
1、 '''...''' (三个双引号或三个单引号) 是字串的多行写法
2、 import datetime 时间模组  datetime.now()取得现在的时间
3、 format() 格式化字串,将 current_time 的值,代入 html的 {current_time}
"""
第三章(Templates) Templates文件夹、静态html

在总mysite项目下,新建Templates文件夹,用于装静态html。
在Templates下,新建hello_world.html

逻辑思路

hello_world.html   ----->   views.py ---->   浏览器
将html这个模板给views加工数值,传给浏览器显示
注意:新建Templates文件夹要在settings.py登记路径

代码
#添加os模块
import os
#添加模板的路径
TEMPLATES = [
    {
       #'DIRS': [],
        'DIRS': [ os.path.join(base_DIR, 'templates').replace('\', '/'),],
    },
]

hello_world.html






    
        I come from template!!
        
    
    
        

Hello World!

{{ current_time }}

views.py

# trips/views.py

from django.shortcuts import render
from django.http import HttpResponse
from datetime import datetime


def hello_world(request):
    return render(request,'hello_world.html',{'current_time': datetime.now()})
"""
知识点
   
render(request, 'hello_world.html', {'current_time': datetime.now()} )
render(request,      template_name,             dictionary           )

request -- HttpRequest 对象
template_name -- 要使用的 Template
dictionary -- 包含要新增至 Template 的变数
render :产生 HttpResponse 对象。
"""

结果是:

第四章(Models)

Models数据模型

设置资料库(默认使用SQLite)

为了开发方便,我们使用 Django 预设的资料库 SQLite。
打开 settings.py,看看 DATAbaseS 的设定。
修改设置,就可以轻易地从 SQLite 转换到 MySQL、PostgreSQL、或是 Oracle

逻辑思路

settings.py设置数据库  ----->   models.py   -----> 生成迁移,执行迁移
注意:使用mysql,还需设置App的admin.py

代码

settings.py

DATAbaseS = {
#设置为SQLite
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': base_DIR / 'db.sqlite3',
    }


#设置为mysql
    'default': {
        'ENGINE': 'django.db.backends.mysql',
		'NAME': 'books', 		 # books是数据库的名称(需提前建立数据库)
		'HOST': 'localhost',
		'PORT': '3306',   
		'USER': 'root',  		 # 数据库用户账号名
		'PASSWORD': '123', 		 # 数据库用户密码
	   #'OPTIONS': {'charset': 'utf8'},
    }
}

admin.py(使用mysql时,要设置)

from django.contrib import admin

from .models       import   BookInfo	#BookInfo是数据表名
from 同级的模型.py  import    数据表(class后面的名)

admin.site.register(BookInfo)
admin.site.register(数据表)

models.py

# trips/models.py
from django.db import models
class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(blank=True)
    photo = models.URLField(blank=True)
    location = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
生成迁移的数据库(建立迁移文件)
python manage.py makemigrations

迁移数据库(动作)
python manage.py migrate
第五章Django API 来与资料库互动 (CRUD)

Create (新增)、Read (读取)、Update (修改)、Delete (删除)
进入Django Shell

python manage.py shell
models.py
from django.db import models
class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(blank=True)
    photo = models.URLField(blank=True)
    location = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.title  (加了之后,Post 已经被重新定义成显示标题)

Create
· from APP.模型 import class名(数据表)
·from trips.models import Post

·Post.objects.create(title=‘My First Trip’, content=‘肚子好饿,吃什麽好呢?’, location=‘台北火车站’)
·Post.objects.create(title=‘自定义文字’, content=‘自定义文字’, location=‘自定义文字’)

Read

from trips.models import Post
显示所有的 Post
·Post.objects.all()

显示某个资料
Post.objects.get(id=1)

显示除了gt=1的资料
Post.objects.filter(id__gt=1)

models.py
def str(self):
return self.title (加了之后,Post 已经被重新定义成显示标题)

Update
from trips.models import Post
Post.objects.all()
posts = Post.objects.filter(id__lt=3)
posts
posts[0].location
posts[1].location
posts.update(location=‘捷运大安站’)
posts[0].location
posts[1].location

Delete
posts = Post.objects.filter(id__lt=3)
posts.delete() #刚刚的那两笔 Post 删除
Post.objects.all()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号