当前位置: 首页 > article >正文

python练习-Django web入门

python -m pip install --user requests

使用API调用请求数据

  • 处理API响应
import requests


class Requests:

    def request(self):
        url = "https://www.toutiao.com/stream/widget/local_weather/data/?city=北京"
        headers = {"Accept": "application/json; charset=utf-8"}
        r = requests.get(url, headers=headers)
        # 200
        print(f"Status code:{r.status_code}")
        response_dict=r.json()
        # data
        print(response_dict.keys())
        # 北京
        print(response_dict['data']['city'])
        # 雾
        print(response_dict['data']['weather']['current_condition'])

Requests().request()

Django项目创建

# 1、创建虚拟环境
python -m venv venv

# 2、激活虚拟环境
## win
venv\Scripts\activate

## linux macOS
source venv/bin/activate

# 3、安装 Django
pip install django

# 4、创建 Django 项目
django-admin startproject myproject

在进入到myproject运行,因为使用manage.py
python manage.py startapp appppp(应用程序名)

# 6、在项目目录(myproject)修改settings.py 添加应用程序
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appppp',  # 添加你的应用
]

# 7、定义模型 
# appppp 下的models.py

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

# 8、创建迁移文件
python manage.py makemigrations

# 9、应用迁移文件
运行 migrate 命令将迁移文件应用到数据库
python manage.py migrate


# 10、创建视图
应用程序目录(appppp)下的views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world!")

# 11、配置 URL
应用程序目录(appppp)下创建urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]


在项目目录(myproject)下urls.py添加路径映射
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    # path('', views.index, name='index'),
    path('appppp/', include('appppp.urls')),
]

# 12、运行
python manage.py runserver

http://127.0.0.1:8000/appppp/

练习项目

  • 定义模型 (models.py)
from django.db import models


# Book 类继承自 models.Model。这意味着 Book 是一个 Django 模型,Django 会为它创建一个对应的数据库表
class Book(models.Model):
    # title 字段 
    # CharField 是一个字符字段,用于存储文本数据
    # max_length=100 表示这个字段的最大长度是 100 个字符
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    # DateField 是一个日期字段,用于存储日期数据
    publication_date = models.DateField()

    # __str__ 方法定义了当一个 Book 对象被转换为字符串时,应该返回什么内容
    def __str__(self):
        return self.title
title = models.CharField(
    max_length=100,
    null=False,
    blank=False,
    default='',
    unique=True,
    help_text='Enter the title of the book.'
)

max_length:
    作用:指定字段的最大长度。
    适用范围:CharField 和 TextField。
    示例:max_length=100 表示 title 字段的最大长度为 100 个字符。
    数据库影响:在数据库中,这个字段会被创建为一个固定长度的字符串字段,最大长度为 100。
null:
    作用:指定数据库中该字段是否可以为空。
    适用范围:所有字段类型。
    示例:null=False 表示数据库中 title 字段不能为空。
    数据库影响:在数据库中,这个字段会被创建为 NOT NULL。
blank:
    作用:指定表单验证时该字段是否可以为空。
    适用范围:所有字段类型。
    示例:blank=False 表示表单中 title 字段不能为空。
    表单影响:在表单验证时,如果 blank=False,则表单提交时该字段必须填写。
default:
    作用:指定字段的默认值。
    适用范围:所有字段类型。
    示例:default='' 表示 title 字段的默认值为空字符串。
    数据库影响:在数据库中,如果插入数据时没有提供 title 字段的值,则默认值为空字符串。
unique:
    作用:指定字段值是否必须唯一。
    适用范围:所有字段类型。
    示例:unique=True 表示 title 字段的值必须唯一。
    数据库影响:在数据库中,这个字段会被创建为一个唯一索引,确保每个值都是唯一的。
help_text:
    作用:指定表单中的帮助文本。
    适用范围:所有字段类型。
    示例:help_text='Enter the title of the book.' 表示在表单中显示的帮助文本为 "Enter the title of the book."。
    表单影响:在表单中,这个帮助文本会显示在字段旁边,提供用户指导
python manage.py makemigrations
python manage.py migrate
  • 创建视图 (views.py)
from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    # 使用 render 函数将请求、模板名称和上下文数据组合在一起,返回一个渲染后的 HTTP 响应
    # {'books': books} 是传递给模板的上下文数据,key与模板中变量名一致,value为数据
    return render(request, 'books/book_list.html', {'books': books})

books = Book.objects.all()

all(): 返回一个包含所有记录的 QuerySet。
filter(**kwargs): 返回一个包含满足条件的记录的 QuerySet。
exclude(**kwargs): 返回一个包含不满足条件的记录的 QuerySet。
get(**kwargs): 返回一个满足条件的单个记录,如果找不到或找到多个记录,会抛出异常。
create(**kwargs): 创建并保存一个新的记录。
get_or_create(**kwargs): 获取一个满足条件的记录,如果不存在则创建一个新的记录。
update_or_create(**kwargs): 更新一个满足条件的记录,如果不存在则创建一个新的记录。
count(): 返回记录的数量。
first(): 返回第一个记录,如果不存在则返回 None。
last(): 返回最后一个记录,如果不存在则返回 None。
order_by(*fields): 按指定字段排序记录。
values(*fields): 返回一个包含指定字段的字典的 QuerySet。
values_list(*fields, flat=False): 返回一个包含指定字段的元组的 QuerySet,如果 flat=True 且只有一个字段,则返回一个扁平的列表。
  • 定义URL
from django.urls import path
from . import views

urlpatterns = [
    # views 是一个模块(通常是 views.py 文件),book_list 是该模块中的一个函数
    # name=book_list 就是个URL 模式的名称
    path('books/', views.book_list, name='book_list'),
]
  • 创建模板 (book_list.html)
<!DOCTYPE html>
<html>
  <head>
    <title>Book List</title>
  </head>
  <body>
    <h1>Books</h1>
    <ul>
      {% for book in books %}
      <li>{{ book.title }} - {{ book.author }}, Published: {{ book.publication_date }}</li>
      {% endfor %}
    </ul>
  </body>
</html>
  • 创建超级用户添加测试数据
python manage.py createsuperuser
from .models import Book

admin.site.register(Book)

  • 在项目(非应用程序)urls.py下添加映射
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('appppp.urls')),
]
  • 启动
python manage.py runserver

http://www.kler.cn/a/392153.html

相关文章:

  • 如何用C#和Aspose.PDF实现PDF转Word工具
  • 第74期 | GPTSecurity周报
  • C++20 中最优雅的那个小特性 - Ranges
  • TensorRT基础知识
  • Java 网络编程(一)—— UDP数据报套接字编程
  • RS®SZM 倍频器
  • 【计算机网络】设备网卡NIC的工作内容有哪些呢?
  • python+pptx:(三)添加统计图、删除指定页
  • rust构建web服务器
  • Linux终端命令后台运行
  • spring中r类是什么
  • ubuntu下的一些常用指令
  • 如何从头开始构建神经网络?(附教程)
  • 代码随想录算法训练营第四十五天|Day45 动态规划
  • pandas的to_sql方法中使用if_exists=‘replace‘
  • Spring Boot编程训练系统:最佳实践与技巧
  • MySQL与Oracle对比及区别
  • 图像增强——代数运算
  • vue3面试题1|[2024-11-12]
  • labview用sql server数据库存取数据到一个单元格
  • AI: 情景模拟攻击(草稿)
  • 蓝队的基础
  • 奥迪:在工业边缘使用 VMware 边缘计算堆栈
  • 从 O(n²) 到 O(n):单调栈在算法中的妙用
  • SpringSecurity Demo实操
  • 【系统架构设计师】真题论文: 论软件可靠性设计与应用(包括解题思路和素材)