django入门操作体验1

1.虚拟环境+django环境(若存在用之前的)

创建一个虚拟环境 (会新建一个文件,里面有 Scripts/python.exe文件)

python -m venv myvenv
 cd myvenv        # 进入虚拟环境安装django库等
 .\Scripts\activate.bat
pip install Django
pip install django==2.0    # 指定版本
下载比较慢的同学可以换个源下载
pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

django入门操作体验1

2.创建django项目和app应用程序

创建好项目,就可以用pytharm打开了

自己找个位置(运行时,还需要时虚拟环境哈)
python -m django startproject <projectname>    &#xFF08;&#x4F1A;&#x5728;&#x5F53;&#x524D;&#x76EE;&#x5F55;&#x4E0B;&#x521B;&#x5EFA;&#x9879;&#x76EE;&#xFF09;
django-admin startproject  <projectname>

</projectname></projectname>

django入门操作体验1

设置好pytharm使用到的 python环境。

django入门操作体验1

3.运行命令

python manage.py runserver 默认8000端口 ( python .\manage.py runserver)

python manage.py runserver 0.0.0.0:8888 指定端口

或者创建应用,来看看环境成功没有

django入门操作体验1
创建好项目侯,就可以用pycharm打开了
#在项目目录中
python manage.py startapp
或者:
python -m django startapp demo

这里运行时,可以能遇到问题:

1.Python 3.10中已经将collections.Iterable改为typing.Iterable,而Django 2.2和以前的版本中使用了collections.Iterator,因此无法兼容Python 3.11。

需要升级到Django 3.2以上的版本,因为Django 3.2中已经对Python 3.11进行了兼容性修复。

pip install –upgrade django

pip uninstall django

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple (下载3.2以上的)

注册应用

在公共目录setting中的INSTALLED_APPS添加 新增的

或者写成 polls.apps.PollsConfig (可以去复制,按住ctrl+C + shift + alt)

django入门操作体验1

django入门操作体验1

3.定义路由urls 和函数视图views

路径和视图函数举例

视图函数中,必须要返回HttpResponse对象,或子类的对象

django入门操作体验1

如上图:

a应用内views.py中

from django.http import  HttpResponse
def index(request): #用一个参数来接收,随便写,一般写成request
    return HttpResponse("冲击40W")

b.外部urls中

导入方式有两种:
from demo应用名 import views
或者from demo.views import index  具体的
urlpatterns = [
    path("admin/", admin.site.urls),
    path('index/',views.index),   #后面不用 加括号了
]
c.启动服务器,后可以查看效果
1.python manage.py runserver 9090 # &#x4E5F;&#x53EF;&#x4EE5;&#x4E0D;&#x6307;&#x5B9A;&#x7AEF;&#x53E3;
2.&#x8BBF;&#x95EE;http://127.0.0.1:9090/index/

注意:定义了url后,默认的欢迎页,就没有了

django入门操作体验1

urls传递参数

urls.py中,views视图中。

这样就实现了,再访问路由的时候,把一些值传给了视图函数

urls.py中
path('jobs/',views.detail)

views中,视图函数要接收这个参数。  第二个参数名要何 url中定义的一样
def detail(request,job_id):
    return HttpResponse(f"you are looking at question {job_id}")

django入门操作体验1

4.统一应用的路由前缀

实现机制:

path中,第二个参数为 include(),就会去找子路由。

若一个项目中,有多个app应用,每个app应用都有自己的url,若写在一块,会比较臃肿

a.应用内要新建一个urls文件

django入门操作体验1

b.外部的urls文件中使用include引用应用内的urls文件

django入门操作体验1

应用内的urls.py也可以不导入了

django入门操作体验1

效果如下

django入门操作体验1

这个也可以看效果

django入门操作体验1

4.前后端不分离的

定义路由+视图+html模板__常用模板语法

a.修改视图,使用render渲染html模板

第二个参数会自动识别 templates文件中的html文件

django入门操作体验1

或者这么写

b.在应用内,新建一个文件 templates(django会识别这个文件), 里面添加一个html文件,访问看效果:

django入门操作体验1
views 中
def index(request): #用一个参数来接收,随便写,一般写成request
    # return HttpResponse("冲击40W")
    sutdents =["小王","小李"]
    return render(request,'molingli.html',{'students':sutdents})

templates文件下,molingli.html
{% if students %}

    {% for student in students %}
        {{ student }}
    {% endfor %}

{% else %}
     no polls are available
{% endif %}

django入门操作体验1

模板引入css+js静态文件

1.在应用内放入静态资源 static, 保持如下格式就行,按格式添加一个test.css

django入门操作体验1

2.html文件中载入静态文件的目录,要点:

{% load static %} 写在顶部

css文件载入(head头部中)识别哪个css文件


js文件的载入(body中尾部)识别哪个js文件

如下图

django入门操作体验1

html中的标签如下


{% load static %}

    Document

    h1 {color: blue;text-align: center;}

    添加发布会
    这个【蓝色】是html中通过style标签写的CSS
    这个【绿色】样式来自静态文件中的CSS文件

    {#   class为 test的 就是红色 #}
    {{ students }}
    {% for s in students %}
        {{ s }}
    {% endfor %}

test.css文件如下(.test 这些是CSS选择器,如.test表示 ,class 为test的就要符合此样式)

.red_clolor{
    background-color: red;
}

 h2 {
        color: green;
    text-align: center;
     }

模板的继承

django入门操作体验1

子模板中写法

使用{% extends “molingli.html” %} 继承 molingli,html 页面

django入门操作体验1

5.数据库概念ORM操作

数据库迁移命令

一个类就是一个表,一个对象就是一条数据

创建好类后,用如下命令,把表同步到数据库。

&#x751F;&#x6210;&#x8FC1;&#x79FB;&#x6587;&#x4EF6;&#xFF08;&#x6B64;&#x65F6;&#x8FD8;&#x6CA1;&#x64CD;&#x4F5C;&#x6570;&#x636E;&#x5E93;&#xFF09;&#x5982;&#x679C;&#x786E;&#x5B9A;&#x662F;&#x54EA;&#x4E2A;&#x5E94;&#x7528;&#x7684;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x52A0;&#x5E94;&#x7528;&#x540D;

python manage.py makemigrations  [&#x5E94;&#x7528;&#x540D;&#x79F0;]  # &#x5982;&#x679C;&#x547D;&#x4EE4;&#x4E0D;&#x884C;&#x540E;&#x9762;&#x52A0;&#x4E2A;&#x5E94;&#x7528;&#x540D;

&#x540C;&#x6B65;&#x6570;&#x636E;&#x5E93;  &#xFF08;&#x64CD;&#x4F5C;&#x4E86;&#x6570;&#x636E;&#x5E93;&#xFF09;
python manage.py migrate

setting中配置数据库如mysql

数据库配置在setting中,如下

django入门操作体验1

代码:

新增一个mysql数据库

django入门操作体验1

如果配置不写 test部门, 新建数据库默认要 utf8mb4 和 utf8_general_ci

*

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'polls',            # &#x6570;&#x636E;&#x5E93;&#x540D;
        'USER': 'root',            # &#x7528;&#x6237;&#x540D;
        'PASSWORD': 'qwe369',        # &#x5BC6;&#x7801;
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'TEST':{
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci', }
                }
}

修改后,需要安装第三方库 pip install pymysql,(django 3 不要用pymysql了?)

新版本的要装库: pip install mysqlclient

并且需要修改连接数据库的连接需要的库, 在 mysite(应用) \ 的 init.py中

import pymysql

pymysql.install_as_MySQLdb()

关系表举例

1.例子:老师表和班级表(一个老师只能在一个班级)(多余1关系)

这个时候setting中注册了应用就起作用了

django入门操作体验1
from django.db import models

Create your models here.

class Grade(models.Model):
    num= models.CharField(max_length=64,unique=True)

    def __str__(self):
        return self.num

class Teacher(models.Model):
    name= models.CharField(max_length=64)
    grade = models.ForeignKey(Grade,on_delete=models.CASCADE)

    def __str__(self):
        return self.name

使用菜单中tool中的东西 ctrl alt R 使用 python manage控制台

可以快速的使用命令

django入门操作体验1

创建好后,这里就有表了

注意: 第一次 migrate时,不要加 应用名,需要吧基础的东西放过去

如:基础放过去了,才能 createuser

django入门操作体验1

模型表注册到admin

admin.py中注册表,启动服务,就能在admin中查看数据库了

django入门操作体验1

配置setting文件(admin语言等)

补充:默认看到的页面是英文的,可以配置,配置后变成中文

修改setting文件

方式1

LANGUAGE_CODE = "zh-hans"   # 默认 "en-us"
LANGUAGE_CODE = "en-us"
TIME_ZONE = "Asia/Shanghai"           # 默认 UTC
USE_TZ=False 是否使用UTC时间,不使用就是用本地时间

方式2:

应该在配置文件 settings.pyMIDDLEWARE 最后加入如下配置

加一排 ‘django.middleware.locale.LocaleMiddleware’, # admin界面语言本地化

django入门操作体验1

创建用户命令

创建管理员:(创建后才能进入admin页面)

*

python manage.py createsuperuser

taoke

taoke@qq.com

123456

在admin页面中新增班级和老师

django入门操作体验1

在添加老师时,就能发现一个老师只能选一个班级

django入门操作体验1

多对多关系表举例

例子二:班级和学生(假设学生可以参加多个班级)多对多关系

则使用外键ManyToManyField

定义在逻辑发起方:学生参与班级,即学生表

同样,在admin注册

django入门操作体验1

班级,老师,学生model类如下

class Grade(models.Model):
    #&#x73ED;&#x7EA7;&#x5982;&#xFF1A;1&#x73ED;&#x3001;2&#x73ED;
    num=models.CharField(max_length=64,unique=True)

    def __str__(self):
        return self.num

class Teacher(models.Model):
    #&#x59D3;&#x540D;
    name=models.CharField(max_length=64)
    #&#x8001;&#x5E08;&#x6240;&#x5728;&#x73ED;&#x7EA7;
    grade=models.ForeignKey(Grade,on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class Student(models.Model):
    #&#x59D3;&#x540D;
    name=models.CharField(max_length=64)
    #&#x73ED;&#x7EA7;
    grades=models.ManyToManyField(Grade,through='Student_grade_rel')    #through&#x5199;&#x5173;&#x7CFB;&#x8868;&#x7684;&#x7C7B;&#x540D;

#&#x5173;&#x7CFB;&#x8868;&#xFF0C;&#x5B66;&#x751F;&#x548C;&#x5B83;&#x662F;&#x591A;&#x5BF9;1&#xFF0C;&#x73ED;&#x7EA7;&#x548C;&#x5B83;&#x4E5F;&#x662F;&#x591A;&#x5BF9;1
class Student_grade_rel(models.Model):
    #&#x5B66;&#x751F;
    sutent = models.ForeignKey(Student, on_delete=models.CASCADE)
    grade = models.ForeignKey(Grade, on_delete=models.CASCADE)
    # &#x65B0;&#x589E;&#x5B57;&#x6BB5;---&#x67D0;&#x5B66;&#x751F;&#x5728;&#x8BE5;&#x73ED;&#x7684;&#x6392;&#x540D;
    rank = models.IntegerField()

    #&#x547D;&#x540D;&#x5173;&#x7CFB;&#x8868;
    class Meta:
        db_table = 'sign_guest_events'

新增学生,可以看到学生表中,只有一个字段,另一个多对对关系的字段,是通过关系表关联的

django入门操作体验1

django入门操作体验1

补充:orm简单的操作和 url参数的传递

django入门操作体验1

模型的继承

补充: 在项目中,可以创建 一个 叫common的应用,在里面存放一些公共的表的定义。

详见:OMR创建表_omr python_A~taoker的博客-CSDN博客

八、响应的整理:

第一种:HttpResponse

返回字符串的
from django.http import HttpResponse

django入门操作体验1

可以把字典转化成json字符串,就可以用HttpResponse 返回了

其他参数:

  • content_type 响应体格式
  • status: 响应状态码 200的, 400 , 555(不存在的浏览器会显示不认识)

django入门操作体验1

第二种:JsonResponse

from django.http import HttpResponse,JsonResponse return JsonResponse(project_data,json_dumps_params={‘ensure_ascii’:False})

它是基础 HttpRespose的

django入门操作体验1

json_dumps_params 有中文,可以加这个参数

django入门操作体验1

如果,不是字典,如果时字典套字典,就加一个safe=False ,

参数1:第一个需要是字典,或者是列表,如果是querySet列表对象,就需要用list转化一下

参数2:safe =False 如果是字典套字典,就加这个参数

参数3:json_dumps_params=False 有中文,可以加这个参数

第三种: render

from django.shortcuts import render

注:views中的 {students: students}

和html中的 students,写法要一样, 但实际的内容是 后面的值。

django入门操作体验1

九:使用技巧

1. 命令使用帮助

python .\manage.py help 命令的帮助

python .\manage.py startapp -h 创建应用-h 查看具体的帮助

2.使用python manage.py 命令控制台:

可以不用输入 pythonmanage.py ,还能智能提示

专业版本pytcharm tools,还可以使用快捷键

django入门操作体验1

3.快速启动

django入门操作体验1
  1. pycharm 工具使用

ctrl+D,快速复制一行

复制路径: ctrl + c +shift + alt

知识点小结:

1.views.py视图函数中需要带一个参数,习惯把它些成了request

2.HttpResponse是django.http的一个东西,可以直接返回内容到浏览器上

3.render 可用来渲染html模板,并且可以给模板传值

4.html文件中的模板语法

  • 使用变量 {{ }}
  • for循环 {% for i in list %} —–{% endfor%}
  • if判断 {% if 条件 %}———{% endif %}
  • 列表元素个数: **list | lenth
  • 载入静态文件 {% load static %}
  • css文件载入(head头部中)

*

js文件的载入(body中)

  • 父模板和子模板的插槽写法:{% block **** %} —插槽—{ % endblock %}
  • 模板继承写法:{% extends “base.html” %}

5.多对1,多对对表关系的定义。

6.url中参数传递,orm操作,获取一个数据

Original: https://blog.csdn.net/Ataoker/article/details/121398857
Author: A~taoker
Title: django入门操作体验1

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/735176/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Scrapy_redis框架的概念作用和流程

    当爬取的网站的数据量非常庞大的时候,再使用之前的Scrapy框架速度就会有点偏慢,这时可以使用分布式来快速的爬取大量的数据。 1. 分布式是什么 分布式就是不同的节点(服务器,ip…

    Python 2023年10月5日
    034
  • VSCode 安装配置 Python + Django + MySQL + Html + CSS

    目录 * – 一、下载安装VSCode – + 1.1 下载 VSCode + * 1.1.1 打开官网下载页面 * 1.1.2 修改为国内镜像下载 + 1…

    Python 2023年8月5日
    045
  • Python 函数进阶-迭代器

    能被 next 指针调用,并不断返回下一个值的对象,叫做迭代器。表示为Iterator,迭代器是一个对象类型数据。 迭代器是指迭代取值的工具,迭代是一个重复的过程,每次迭代都是在先…

    Python 2023年5月24日
    071
  • 【安全】Goby使用初探

    Goby使用初探 基础配置 * 语言设置 npcap安装 使用记录 * 端口扫描 基础配置 语言设置 这里使用的环境是Windows10 64机器,下载的方式不再多说,直接官网无脑…

    Python 2023年6月11日
    073
  • 线程池的极简用法——内置线程池multiprocessing

    大家好,今天博主来分享一个线程池的小捷径——内置线程池的使用方法 一、背景 说道多线程,对变成层有了解的小伙伴一定不陌生,虽然不知道是什么但是也会从各大网站、面试分享等途径听说过。…

    Python 2023年11月9日
    034
  • plt、fig、axes、axis的含义

    目录 绘图常用方法 * pyplot绘图 面向对象的API plt、fig、axes、axis的含义 * plt figure,axes与axis add_subplot与add_…

    Python 2023年9月1日
    070
  • 高维多元时序数据聚类

    1. 简介 收集数据的能力不断增强,使我们有可能收集大量的异构数据。在可用的异构数据中,时间序列代表着尚未被充分探索的信息母体。当前的数据挖掘技术在分析时间序列时存在多个缺点,尤其…

    Python 2023年10月10日
    049
  • Python 学习:语句控制结构

    Original: https://www.cnblogs.com/123456feng/p/16068582.htmlAuthor: 蚂蚁ailingTitle: Python …

    Python 2023年11月9日
    044
  • geopandas 与pandas

    geopandas是基于pandas的逻辑开发的能够处理矢量数据的python库(是否能够处理栅格不太确定)那他与pandas的关系如何呢 用一个例子测试一下 1 载入测试数据 i…

    Python 2023年8月18日
    064
  • Python 自动化测试(三): pytest 参数化测试用例构建

    1080×501 27.2 KB 在之前的文章中主要分享了 pytest 的实用特性,接下来讲 Pytest 参数化用例的构建。如果待测试的输入与输出是一组数据,可以把测试数据组织…

    Python 2023年9月15日
    041
  • Python学习笔记——dataframe基础常用操作

    创建dataframe 直接创建:pd.DataFrame() import numpy as np dates = pd.date_range(‘20160918’,period…

    Python 2023年8月19日
    039
  • 随机数模块

    随机数模块 与Python的random模块相比, NumPy的random模块功能更多,它增加了一些可以高效生成多种概率分布的样本值的函数1.例如 import numpy as…

    Python 2023年8月29日
    041
  • 【2022知乎爬虫】我用Python爬虫爬了2300多条知乎评论!

    一、爬取目标 二、展示爬取结果 三、爬虫代码讲解 3.1 分析知乎页面 3.2 爬虫代码 四、同步视频 五、完整源码 您好,我是@马哥python说 ,一枚10年程序猿。 一、爬取…

    Python 2023年5月23日
    082
  • Scrapy+Selenium+PhantomJS详解及入门案例(附完整代码)

    scrapy处理js动态渲染页面时,一种可以分析ajax请求,找到对应的接口,然后进行抓取另一种就是对接selenium或者是splash模拟浏览器抓取 练习为selenium+s…

    Python 2023年10月3日
    037
  • Cha_02 Java语言基础(二)

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/XSem/p/15820521.htmlAuthor: …

    Python 2023年6月10日
    079
  • matplotlib可视化系列之【颜色】

    颜色和排版一样,看似简单,实际上却很复杂。与数学公式和物理定理不同,它在很大程度上涉及艺术和品味。 [En] Color is the same as typesetting, i…

    Python 2023年5月24日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球