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)
相关推荐
Young_202202026 分钟前
学习笔记——KMP
笔记·学习
Leo.yuan20 分钟前
数据量大Excel卡顿严重?选对报表工具提高10倍效率
数据库·数据分析·数据可视化·powerbi
行然梦实22 分钟前
学习日记_20241110_聚类方法(K-Means)
学习·kmeans·聚类
马船长28 分钟前
制作图片木马
学习
Runing_WoNiu29 分钟前
MySQL与Oracle对比及区别
数据库·mysql·oracle
秀儿还能再秀39 分钟前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
WCF向光而行44 分钟前
Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)
笔记·学习
天道有情战天下1 小时前
mysql锁机制详解
数据库·mysql
看山还是山,看水还是。1 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
谷新龙0011 小时前
Redis运行时的10大重要指标
数据库·redis·缓存