zoukankan      html  css  js  c++  java
  • PYTHON3.Django_day02(见pdf)

    day1 回顾

    Django
       1. 安装 
           sudo pip3 install django==1.11.8
       2. 创建django 项目
          django-admin startproject <项目名称>
          django-admin startproject mysite1

      3. mysite1/
               manage.py  # 项目管理的主模块
               mysite1/
                  __init__.py
                  settings.py  # 项目配置文件
                      DEBUG = True
                      ALLOWED_HOST = []
                      TIME_ZONE = 'UTC' # 'Asia/Shanghai'
                      LANGUAGE_CODE = 'zh-hans' # 'en-us'
                      BASE_DIR = 当前项目所在位置的绝对路径
                      ROOT_URLCONF = 'mysite1.urls'
                  urls.py      # 主路由配置文件
                  wsgi.py      # wsgi布署的文件

    URL
        http  ://  127.0.0.1  :8000 /   path?(查询)#urls
        路由:

    主路由配置文件
        # file : urls.py
        from django.conf.urls import url
        urlpatterns = [
            url(r'^page', views.page_view),
            # 注: 如果page匹配成功,则page1和page2略过
            url(r'^page1', views.page1_view),
            url(r'^page2', views.page2_view),
            # /date/2008/1/12  ->date_view(req,'2008', '1', '12')
            url(r'^date/(d{4})/(d{1,2})/(d+)',
                 views.date_view
            # /person/weimingze/35
            # /person/lvze/30 ->person_view(req, name="lvze", age='30')
            url(r'^person/(?P<name>w+)/(?P<age>d+)',
                  views.person_view),
        ]

    -------------------------------------------------------------------------------------------------------------------------------------

    请求和响应
       request    response

    请求方式
        HTTP 1.0 GET/POST/HEAD
        HTTP 1.1 PUT/DELETE/CONNECT/...
      
        def xxx_view(request):
            ...
        request.method     'GET' / 'POST'
       request.GET   绑定QueryDict
                request.GET[键]
                request.GET.get(键, 默认值)
                request.GET.getlist(键)  返回列表
        request.POST   绑定QueryDict
                request.POST[键]
                request.POST.get(键, 默认值)
                request.POST.getlist(键)  返回列表
        request.path
        request.META
               .COOKIE
               .session
    Http响应
       HttpResponse 对象
         HttpResponse(包体的内容, status=状态码,content_type='text/html')

    GET请求传参:
        /page?start=1&stop=100
        request.GET

    PyCharm社区版调试Django程序配置
        1. 选择 Add Configuration
        2. 选择 左上角 + 号 选择 "Python"
           1. script path 里选manage.py 的路径
           2. 在 parameters 里填入runserver

    2019-07-12_10-16-01

    *******清除当前进程*******

    2019-07-12_10-31-32

    POST请求示例:
        如果是GET请求访问 /test_post 返回表单
        如果是POST请求访问 /test_post 返回提交的数据

    能传递给模板的数据类型有:
        int, float, bool, dict, list,
        函数,对象的方法

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6 </head>
      7 <body>
      8     <form action="/test_post" method="post">
      9         <input type="text" name="search_name">
     10         <select name="gender">
     11             <option value=1></option>
     12             <option value=0></option>
     13         </select>
     14         <textarea name="comment" rows="5" cols="10">附言...</textarea>
     15 
     16         <input type="submit" value="开始搜索">
     17     </form>
     18 </body>
     19 </html>
     20 
    xxx.html
      1 """mysite2 URL Configuration
      2 
      3 The `urlpatterns` list routes URLs to views. For more information please see:
      4     https://docs.djangoproject.com/en/1.11/topics/http/urls/
      5 Examples:
      6 Function views
      7     1. Add an import:  from my_app import views
      8     2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
      9 Class-based views
     10     1. Add an import:  from other_app.views import Home
     11     2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
     12 Including another URLconf
     13     1. Import the include() function: from django.conf.urls import url, include
     14     2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
     15 """
     16 from django.conf.urls import url
     17 from django.contrib import admin
     18 
     19 from . import views
     20 
     21 urlpatterns = [
     22     url(r'^admin/', admin.site.urls),
     23     url(r'^sum$', views.sum_view),
     24     url(r'^test_post$', views.test_post_view),
     25     url(r'^test1$', views.test1_view),
     26     url(r'^test2$', views.mypage2_view),
     27     url(r'^page0$', views.page0_view),
     28     url(r'^page1$', views.page1_view),
     29     url(r'^page2$', views.page2_view),
     30     # 以下用page3 和 page/(d+) 来示意URL反向解析
     31     url(r'^page3$', views.page3_view, name="page3"),
     32     url(r'^pagen/(d+)$', views.pagen_view, name="pagen"),
     33 ]
     34 
     35 
    urls.py
      1 
      2 # file : mysite2/views.py
      3 
      4 
      5 from django.http import HttpResponse
      6 
      7 
      8 def sum_view(request):
      9     if request.method == 'GET':
     10         start = request.GET.get('start', '0')
     11         stop = request.GET['stop']
     12         step = request.GET.get('step', '1')
     13         start, stop, step = int(start),int(stop), int(step)
     14         result = sum(range(start, stop, step))
     15 
     16     return HttpResponse("结果: %d" % result)
     17 
     18 html = '''
     19 <!DOCTYPE html>
     20 <html lang="en">
     21 <head>
     22     <meta charset="UTF-8">
     23     <title>Title</title>
     24 </head>
     25 <body>
     26     <form action="/test_post" method="post">
     27         <input type="text" name="search_name">
     28         <select name="gender">
     29             <option value=1>男</option>
     30             <option value=0>女</option>
     31         </select>
     32         <textarea name="comment" rows="5" cols="10">附言...</textarea>
     33 
     34         <input type="submit" value="开始搜索">
     35     </form>
     36 </body>
     37 </html>
     38 '''
     39 
     40 def test_post_view(request):
     41     if request.method == 'GET':
     42         return HttpResponse(html)
     43     if request.method == 'POST':
     44         value = request.POST['search_name']
     45         dic = dict(request.POST)
     46         return HttpResponse("search_name=" + value + str(dic))
     47 
     48 
     49 from django.template import loader
     50 
     51 from django.shortcuts import render
     52 def test1_view(request):
     53 
     54     person = {
     55         # 'name': 'tedu',
     56         # 'age': 19
     57         'name': '魏明择',
     58         'age': 35
     59     }
     60 
     61     # 方法2
     62     return render(request, 'myhomepage.html', person)
     63 
     64     # 方法1
     65     # # t绑定模板对象
     66     # t = loader.get_template("myhomepage.html")
     67     # # 用模板生成html
     68     # html = t.render()
     69     # # 返回给浏览器
     70     # return HttpResponse(html)
     71 
     72 class Dog:
     73     def show_info(self):
     74         return "小黄狗"
     75 
     76 def mypage2_view(request):
     77     myvar = 999
     78     mystr = "hello world!"
     79     mylist = ["北京",'上海', '深圳']
     80     person = {"name": "tedu", 'age':18}
     81     dog1 = Dog()
     82 
     83     def myfun1():
     84         return "函数结果!!!"
     85     # myfun = lambda : "函数结果!!!"
     86 
     87     money = 999999999  # 大于1亿富翁,大于1亿富翁10万有钱
     88 
     89     city = ["北京",'上海', '深圳', '重庆']
     90     # city = []
     91 
     92     return render(request, 'mypage2.html', locals())
     93 
     94     # return render(request, 'mypage2.html',
     95     #               {'myvar': myvar})
     96 
     97 
     98 def page0_view(request):
     99     return render(request, 'mybase.html')
    100 
    101 
    102 def page1_view(request):
    103     return render(request, 'page1.html')
    104 
    105 
    106 def page2_view(request):
    107     return render(request, 'page2.html')
    108 
    109 
    110 def page3_view(request):
    111     return render(request, 'page3.html')
    112 
    113 def pagen_view(request, n):
    114     return render(request, 'pagen.html', locals())
    115 
    116 
    117 
    118 
    119 
    120 
    121 
    122 
    123 
    124 
    125 
    126 
    127 
    128 
    129 
    130 
    view.py
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>{% block mytitle %}主页{% endblock %}</title>
      6 </head>
      7 <body>
      8 <h1 style="background-color: blue;">登陆,注册</h1>
      9 
     10 {% block page_content %}
     11 <h1 style="background-color: orange;">主页内容</h1>
     12 {% endblock page_content %}
     13 
     14 <h1 style="background-color: gray;">请联系我们:010-88889999</h1>
     15 
     16 </body>
     17 </html>
    tempates.mybase.html
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6 </head>
      7 <body>
      8     <h1>姓名:{{ name }}</h1>
      9     <h2>年龄:{{ age }}</h2>
     10 
     11 </body>
     12 </html>
    tempates.myhomepage.html
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>传参测试</title>
      6 </head>
      7 <body>
      8    <h5>myvar = {{ myvar }}</h5>
      9    <h5>myvar + 1= {{ myvar | add:1}}</h5>
     10    <h5>mystr = {{ mystr }}</h5>
     11    <h5>mystr:truncatechars:10 = {{ mystr|truncatechars:10 }}</h5>
     12    <h5>mystr|upper = {{ mystr|upper }}</h5>
     13    <h5>mylist = {{ mylist }}</h5>
     14    <h5>mylist[1] = {{ mylist.1 }}</h5>
     15    <h5>person = {{ person }}</h5>
     16    <h5>person['age'] = {{ person.age }}</h5>
     17    <h5>myfun1() = {{ myfun1 }}</h5>
     18    <h5>dog1.show_info() = {{ dog1.show_info }}</h5>
     19    <h5>aaa = {{ aaa }}</h5>
     20    <h5>你是:
     21        {% if money > 100000000 %}
     22        <b>富翁</b>
     23        {% elif money > 100000 %}
     24        <i>有钱人</i>
     25        {% endif %}
     26    </h5>
     27    {% if money > 0 %}
     28    <h1>钱包里有钱</h1>
     29    {% endif %}
     30     <select>
     31         {% for c in city %}
     32         <option>{{ c }}</option>
     33         {% empty %}
     34         <option>请添加数据</option>
     35         {% endfor %}
     36     </select>
     37 
     38     <ul>
     39         {% for c in city %}
     40         {% if forloop.first %}
     41         <li>=============</li>
     42         {% endif %}
     43         <li>第{{ forloop.counter }}个城市:{{ c }}</li>
     44         {% endfor %}
     45     </ul>
     46     {% comment "我今天心情不好" %}
     47      这是多行注释里的内容
     48     {% endcomment %}
     49 
     50     {# 这是一行不显示的内容 #}
     51     末尾
     52 
     53 </body>
     54 </html>
    tempates.mypage2.html
      1 {% extends 'mybase.html' %}
      2 
      3 {% block page_content %}
      4 <h1>这是运动页的主页</h1>
      5 {% endblock page_content %}
    tempates.page1.html
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6 </head>
      7 <body>
      8 <a href="{% url 'page3' %}">跳转到第3页</a>
      9 <!--<a href="/pagennn/100">跳转到第100页</a>-->
     10 <a href="{% url 'pagen' '100' %}">跳转到第100页</a>
     11 <a href="{% url 'pagen' '999' %}">跳转到第999页</a>
     12 
     13 </body>
     14 </html>
    page3.html
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6 </head>
      7 <body>
      8 <!--<a href="/page333">回到第3页</a>-->
      9 <a href="{% url 'page3' %}">回到第3页</a>
     10 <a href="{% url 'pagen' n %}">回到第{{ n }}页</a>
     11 </body>
     12 </html>
    pagen.html

        示例见:
           mysite2/templates/mypage2.html
  • 相关阅读:
    PHP基础1
    U2-Net网络学习笔记(记录)
    C++贪吃蛇游戏
    实习期间学习基础学习整理
    week 2020.1.10-2020.1.15
    week 2021.1.04-2021.1.08
    week 2020.12.21-2020.12.31
    周记 week 2020-12.14-12.18
    几种读取图片和标签的方法
    图像风格转换(Style Transfer | 风格迁移综述)
  • 原文地址:https://www.cnblogs.com/shengjia/p/11179917.html
Copyright © 2011-2022 走看看