Django学习笔记(一)
admin
2023-07-30 21:20:40
0

笔记来源:自强学堂-Django教程
这个教程真的非常好用!强烈推荐

Django简介-组成部分


  • urls.py:网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
  • views.py:处理用户发出的请求,从urls.py中对应过来,通过渲染templates中的网页可以将显示内容,比如登录后的用户名,用户请求的数据,输出到网页。
  • models.py:与数据库操作相关,存入或读取数据时用到这个,用不到数据库就不使用
  • forms.py:表单。用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。
  • templates 文件夹:views.py 中的函数渲染templates中的html模板,得到动态内容的网页,也可以用缓存来提高速度。
  • admin.py:后台。通过少量代码就可以拥有一个强大的后台。
  • settings.py:Django的设置,配置文件。如DEBUG的开关,静态文件的位置。

Django 基本命令


这些命令很重要,尽量记得

  1. 新建一个django project

    django-admin.py startproject project-name

    一个project为一个项目,project-name 项目名称。

  2. 新建app

    #执行该命令:新建的app与project处于一个文件project下
    django-admin.py startapp app-name 
    #执行这个命令app在project-name子目录下
    #执行这个命令的前提:cd projectname/
    python manage.py startapp app-name

    一般一个项目有多个app,通用的app可以在多个项目中使用

  3. 同步数据库

    #Django 1.7.1以及以上版本需要用一下命令
    python manage.py makemigrations
    python manage.py migrate

    这种犯法可以创建表,当在models.py中新增了类是,运行它可以自动的在数据库中创建表,不用手动创建。

  4. 使用开发服务器
    开发服务器:开发时使用,只用来测试,不要用于生产环境

    python manage.py runserver
    # 当提示端口被占用的时候,可以用其它端口:
    python manage.py runserver 8001
    python manage.py runserver 9999
    (当然也可以kill掉占用端口的进程)
    # 监听所有可用 ip (电脑可能有一个或多个内网ip,一个或多个外网ip,即有多个ip地址)
    python manage.py runserver 0.0.0.0:8000
    # 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
    # 访问对应的 ip加端口,比如 http://172.16.20.2:8000
  5. 清空数据库
    该命令执行后只留下空表
  6. 创建超级管理员
    python manage.py createsuperuser
    # 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
    # 修改 用户密码可以用:
    python manage.py changepassword username
  7. 导出数据
    #注意 导出的xxx.json文件位于 projectname文件夹下
    python manage.py dumpdata appname > appname.json
    python manage.py loaddata appname.json
  8. Django 项目环境终端

    python mange.py shell

    如果你安装了 bpython 或 ipython 会自动用它们的界面,推荐安装 bpython。
    这个命令和 直接运行 python 或 bpython 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据,还有一些小测试非常方便。

  9. 数据库命令行
    python manage.py dbshell

    在这个终端可以执行数据库的SQL语句

  10. 更多命令
    python manage.py

    可以看到详细列表,忘记命令时很好用

Django 视图与网址


  1. 新建一个项目的基本步骤
    #1. 新建一个项目(project), 名称为 mysite
    django-admin.py startproject mysite
    #2. 新建一个应用(app), 名称叫 learn
    #到外层那个 mysite 目录下(不是mysite中的mysite目录)
    python manage.py startapp learn
    #**把我们新定义的app加到settings.py中的****INSTALL_APPS****中**
    #修改 mysite/mysite/settings.py
    #如果不添加这一步,django 就不能自动找到app中的模板文件和静态文件
    #3. 定义视图函数(访问页面的内容)
    #在views.py中修改 注意:coding:utf-8
    #4. 定义视图函数相关的URL(网址)
    # mysite/mysite/urls.py
    #5. 运行服务器
    python manage.py runserver
  2. 其他功能
    • 在网页上做加减法
      1. 采用 /add/?a=4&b=5 这样GET方法进行
        #views.py
        from django.shortcuts import render
        from django.http import HttpResponse
        def add(request):
        a = request.GET[\'a\']
        b = request.GET[\'b\']
        c = int(a)+int(b)
        return HttpResponse(str(c))
        #注:request.GET 类似于一个字典,更好的办法是用 request.GET.get(\'a\', 0) 当没有传递 a 的时候默认 a 为 0
        #urls.py
        from calc import views as calc_views
        url(r\'^add/\', calc_views.add, name=\'add\'),  # 注意修改了这一行
        #访问http://127.0.0.1:8000/add/?a=4&b=5
      2. 采用/add/3/4/这样的网址方式
        #views.py
        def add2(request,a,b):
        c = int(a)+int(b)
        return HttpResponse(str(c))
        #urls.py
        url(r\'^add/(\\d+)/(\\d+)/$\',calc_views.add2,name=\'add2\')
        #访问
        http://127.0.0.1:8000/add/4/5/
    • url中name的作用
      当网址发生改变的时候,访问能够依然有效
      不带参数的:
      {% url \'name\' %}
      带参数的:参数可以是变量名
      {% url \'name\' 参数 %}
      例如:
      link

      上述代码渲染成的最终的页面是:

      link
      #这样就可以通过 {% url \'add2\' 4 5 %} 获取到对应的网址 /add2/4/5/

      注意:注意看重点 add2 变成了 new_add,但是后面的 name=\’add2\’ 没改,这时 {% url \’add2\’ 4 5 %} 就会渲染对应的网址成 /new_add/4/5/
      reverse 函数也是一样,获取的时候会跟着变成新的网址
      让以前的就网址自动跳转到新的网址:

      #views.py
      from django.http import HttpResponseRedirect
      from django.core.urlresolvers import reverse
      def old_add2_redirect(request, a, b):
      return HttpResponseRedirect(
         reverse(\'add2\', args=(a, b))
      )
      #urls.py
      url(r\'^add2/(\\d+)/(\\d+)/$\', calc_views.old_add2_redirect),
      url(r\'^new_add/(\\d+)/(\\d+)/$\', calc_views.add2, name=\'add2\'),

Django 模板


之前都是通过简单的django.http.HttpResponse把内容显示到网页上,现在可以通过渲染模板的方式来显示内容。

  1. 基本步骤
    #1.创建项目和应用
    django-admin.py startproject projectname
    cd projectname
    python manage.py startapp appname
    #2.把应用加入到settings.py INSTALLED_APPS当中
    #3.在appname/views.py 当中写一个首页的视图
    from django.shortcuts import render
    def home(request):
         home render(request,\'home.html\')
    #4. 在appname下新建templates文件夹,里面新建一个home.html
    #默认配置下django会自动找到app下面的templates文件夹中的模板文件
    #5. 修改home.html
    #6. 将视图函数对应到网址,更改projectname/urls.py
    from appname import views as appname_views
    urlpatterns = [
       url(r\'^$\',appname_views.home,name=\'home\'),
    ]
    #7.创建数据库表
    python manage.py migrate
    #8.运行开发服务器
    python manage.py runserver

    注意几点:

    • Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止,所有的都遍历完了还找不到指定的模板的时候就是 Template Not Found (过程类似于Python找包)。
    • 模板命名规则:仅和该app相关的模板放在 app/templates/app/
  2. 循环、条件判断、常用标签、过滤器的使用
    • 显示一个基本的字符串在网页上
      #views.py
      def home(request):
         string = u\'Hello world!\'
         return render(request,\'home.html\',{\'string\':string})
      #home.html
      {{ string }}
    • 基本for循环和List内容的显示
    • 显示字典内容
    • for循环和if条件操作
    • 模板中的逻辑操作
    • 获取当前网址、当前用户

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...