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和一些通信理论方面的学习。这学期要开始考试了,加油哇!!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容