python复习11.9——Django

Django

1.结构分析

Django框架
  • settings 配置文件
  • manage 实用的命令行工具,可以让你以各种方式与该Django项目进行交互
python3 manage.py runserver
  • admin 创建项目,为我们提供后台管理。
# admin
from django.contrib import admin

from .models import People
from .models import Phone
from .models import Address

admin.site.register(People)
admin.site.register(Phone)
admin.site.register(Address)
  • views 视图配置 是一个请求处理函数 接收HTTP请求并返回HTTP响应。视图通过模型访问满足请求所需的数据,并将响应的格式委托给模板

  • urls url对应关系 对应逻辑函数为每个逻辑函数分配相应视图(网站url到views的映射,匹配出现在URL中的字符或数字的特定模式,并将其作为数据传递给视图views 类似目录)

# views
from django.http import HttpResponse
 
def hello(request):
    return HttpResponse("Hello world ! ")
# urls
from django.urls import path
 
from . import views
 
urlpatterns = [
    path('hello/', views.hello),
]
path()函数

path(route,view,kwargs=None,name=None)

  • route 字符串,表示URL规则,与之匹配的 URL 会执行对应的第二个参数 view
  • view 用于执行与正则表达式匹配的URL请求
  • kwargs 视图使用的字典类型的参数
  • name 用来反向获取URL
# 通讯录——urls
from django.urls import path

from . import views

urlpatterns=[
    path('', views.index, name='index'),
    path('<int:people_id>/', views.detail, name='detail'),
    path('search', views.search, name='search'),
]
# 通讯录——views
from django.http import HttpResponse
from django.template import loader
from django.shortcuts import render
from django.http import Http404
from .models import People

def index(request):
    people_list = People.objects.order_by('-add_date')[:5]
    template = loader.get_template('phone/index.html')
    context= {
        'people_list': people_list,
    }
    return HttpResponse(template.render(context, request))

def detail(request, people_id):
    try:
        people = People.objects.get(pk=people_id)
    except People.DoesNotExist:
        raise Http404("此人不在通讯录内")
    return render(request,'phone/detail.html',{'people':people})


def search(request):
    ctx={}

    if request.POST:
        ctx['rlt'] = request.POST['q']
        name = request.POST['q']
        print(request.POST['q'])
        try:
            people = People.objects.get(people_text=name)
        except:
            raise Http404("此人不在通讯录内")
    return render(request,'phone/detail.html',{'people':people})
render()函数

载入模板,填充上下文,再返回由它生成的HttpResonse对象

  • templates 模板 编辑更多视图 添加html文件
# 通讯录——index.html

<h1>通讯录</h1>

<form action="/phone/search" method="post">
{% csrf_token %}    {% csrf_token %}
<input type="text" name="q">
<input type="submit" value="查询">
</form>
{% if people_list %}
    <ul>
    {% for people in people_list %}
        <p>姓名</p><li><a href="/phone/{{ people.id }}/">{{people.name_text}}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>NO people are available.</p>
{% endif %}
# 通讯录——detail.html
<h1>{{ people.name_text }}</h1>
<ul>
<h2>地址</h2>
{% for address in people.address_set.all %}
    <li>{{ address.address }}</li>
{% endfor %}
<h2>手机号</h2>
{%for phone in people.phone_set.all%}
    <li>{{ phone.number }}</li>
{% endfor %}
</ul>
  • apps 配置当前APP
from django.apps import AppConfig


class PollConfig(AppConfig):
    name = 'poll'
  • models 写指定的类通过命令可以创建数据库结构
# models
from django.db import models
 
class Test(models.Model):
    name = models.CharField(max_length=20)

以上的类名代表数据库表名,且继承了models.Model。每个模型都有许多的变量,都表示模型里的一个数据库字段。

  • CharField 字符字段
  • DateTimeField 日期时间字段

每个Field类实例变量的名字也是字段名。

# 通讯录——models
from django.db import models

class People(models.Model):
    name_text = models.CharField(max_length = 200)
    add_date = models.DateTimeField('data added')
    def __str__(self):
        return self.name_text

class Phone(models.Model):
    people = models.ForeignKey(People,on_delete=models.CASCADE)
    number = models.CharField(max_length = 200)
    def __str__(self):
        return self.number

class Address(models.Model):
    people = models.ForeignKey(People,on_delete=models.CASCADE)
    address = models.CharField(max_length = 200)
    def __str__(self):
        return self.address

中间还有一些在命令行上创建、激活的步骤 时间有限 仅为考试复习做准备。

11.11python考试 希望能考出一个不错的分数!!!!

Python复习系列结束了,下一次写博客应该会是寒假的时候了吧,希望寒假能够把python深入学习一下数据处理和分析;还有matlab和一些通信理论方面的学习。这学期要开始考试了,加油哇!!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Django 系统 环境Python 3.6Django 1.8 参考资料[Django中文教程](https:/...
    Rockage阅读 3,434评论 0 0
  • 利用HTTP协议向服务器传参的几种途径、响应、Cookie、Session、类视图、中间件 注意: 1>Dja...
    Cestine阅读 5,173评论 0 2
  • restframework restframework简介 它是基于Django的,帮助我们快速开发符合restf...
    DayBreakL阅读 4,196评论 0 2
  • 基于类的视图 Django中的视图是一个可调用对象,它接收一个请求然后返回一个响应。这个可调用对象不仅仅限于函数,...
    兰山小亭阅读 10,039评论 1 13
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 9,773评论 0 13