django学习笔记(1)

django创建项目

先创建一个文件夹用来放django的项目,我这里是My_Django_it

之后打开到该文件下,并用下面的指令来创建myDjango1项目

复制代码
D:\>cd My_Django_it

D:\My_Django_it>"D:\zzu_it\Django_learn\Scripts\django-admin.exe" startproject myDjango1

D:\My_Django_it>

文件介绍

APP

类似蓝图

模块化

复制代码
python manage.py startapp app01


快速项目

在myDjango2中的settings.py中

python 复制代码
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "app01.apps.App01Config",
]

最后一句加上"app01.apps.App01Config",

编写URL和视图的关系

运行项目

复制代码
 python manage.py migrate

bug: 若出现下面报错

复制代码
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
Error: You don't have permission to access that port.

说明端口被占用了,很可能是酷狗占用了,只要关闭酷狗就行了



后端渲染

python 复制代码
def user_list(request):
    return render(request,"user_list.html")

加载静态界面

模板语法

python 复制代码
def tpl(request):
    name="李四"
    roles=["管理员","CEO","保安"]
    user_info={"name":"李明","salary":10000,"role":"CEO"}
    data_list=[
        {"name": "李明", "salary": 10000, "role": "CEO"},
        {"name": "王五", "salary": 10000, "role": "CEO"},
        {"name": "李四", "salary": 10000, "role": "CEO"},
        {"name": "赵一", "salary": 10000, "role": "CEO"}
    ]
    return render(request,"tpl.html",{"n1":name,"n2":roles,"n3":user_info,"n4":data_list})
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>模板语法的学习</h1>
<div>{{  n1 }}</div>
<div>{{ n2 }}</div>
<div>{{ n2.0 }}</div>
<div>{{ n2.1 }}</div>
<div>{{ n2.2 }}</div>
<div>
    {% for item in n2 %}
        <span>{{ item }}</span>
    {% endfor %}
</div>
<div>
    {{ n3.name }}
        {{ n3.salary}}
        {{ n3.role }}
</div>

<ul>
    {% for item,v in n3.items %}
        <li>{{ item }}:{{ v }}</li>

    {% endfor %}
</ul>

<hr>
{{ n4.1.name }}
<ul>
{% for item in n4 %}
    {% for k,v in item.items %}
        <li>{{ k }}:{{ v }}</li>
    {% endfor %}
{% endfor %}
</ul>


</body>
</html>


通过爬虫显示数据

在news函数中如下

python 复制代码
def news(req):
    #用爬虫获取新闻
    # 向http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2023/07/news发送请求
    import requests
    res=requests.get("http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2023/07/news",headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183"})
    print(res)
    data_list=res.json()
    print(data_list)

    return render(req,"news.html")

其中如果报错Expecting value: line 1 column 1 (char 0),找到上图User-Agent的位置,加入到requests参数中

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新闻</title>
</head>
<body>
<h1>新闻中心</h1>
<ul>
    {% for news in news_list %}
    <li>新闻标题:{{ news.news_title }}</li>
    <li>时间:{{ news.post_time }}</li>
    {% endfor %}
</ul>
</body>
</html>

请求与响应

python 复制代码
def something(request):
    # request 是一个对象,浏览器发的所有数据
    print(request.method)

    print(request.GET)
    print(request.POST)
    # HttpResponse返回里面的字符串
    #return HttpResponse("返回")

    #渲染
    #return render(request,"something.html",{"title":"1212"})

    #重定向
    #return redirect("https://www.baidu.com")

数据库

安装外部库

python 复制代码
pip install mysqlclient

ORM

  • 创建表,修改,删除(不能创建数据库)
  • 操作表中的数据

创建数据库

  • 启动MySQL
  • 自带工具创建数据库

在cmd中进入mysql -u root -p进入

创建数据库

也可以通过Navicat中创建数据库

在setting.py中创建数据库参数

python 复制代码
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'Django_learn',
    'USER': 'root',
    'PASSWORD': '200625',
    'HOST': '127.0.0.1',
    'PORT': 3306,
    }
}

在models.py中

python 复制代码
class UserInfo(models.Model):
    #表名 app01_userInfo
    name = models.CharField(max_length=32)
    password=models.CharField(max_length=32)
    age=models.IntegerField()

在命令框中执行如下

python 复制代码
python manage.py makemigrations

python manage.py migrate 

在cmd中选择数据库

python 复制代码
use django_learn

显示表

python 复制代码
show tables

显示表中的变量

python 复制代码
 desc app01_userinfo

若在原有的数据库中添加新的变量需要再次执行如下

python 复制代码
python manage.py makemigrations

python manage.py migrate 

并且在models.py中添加上默认值

python 复制代码
class UserInfo(models.Model):
    #表名 app01_userInfo
    name = models.CharField(max_length=32)
    password=models.CharField(max_length=32)
    age=models.IntegerField()
    size=models.IntegerField(default=2)
相关推荐
HaiQinyanAN3 分钟前
【学习笔记】FTP库函数学习
windows·笔记·学习
程序员JerrySUN11 分钟前
GPU 基础矩阵精规组织教程:从基础作用到实战应用
数据库·系统架构·gpu算力
不辉放弃13 分钟前
Spark SQL 的 SQL 模式和 DSL模式
数据库·pyspark·大数据开发
七七软件开发15 分钟前
二手交易 app 系统架构分析
java·python·小程序·系统架构·php
飞翔的佩奇3 小时前
基于SpringBoot+MyBatis+MySQL+VUE实现的房屋交易平台管理系统(附源码+数据库+毕业论文+部署教程+配套软件)
数据库·spring boot·mysql·vue·毕业设计·mybatis·房屋交易平台
U盘失踪了6 小时前
python JSONPath 表达式生成器
linux·windows·python
山烛8 小时前
决策树学习全解析:从理论到实战
人工智能·python·学习·算法·决策树·机器学习
wb1899 小时前
服务器的Mysql 集群技术
linux·运维·服务器·数据库·笔记·mysql·云计算
风已经起了9 小时前
FPGA学习笔记——简单的乒乓缓存(RAM)
笔记·学习·fpga开发