小司机带你模仿: Django+Xadmin打造在线教育平台[Python2&3通用 ](三)-3&4&5

辞旧迎新,曾经就多去,未来就赶到;新的相同年,让自己用心去接吧!

3-3 django orm介绍与model设计

上节课程完成后代码(来学习本节前置条件):

github仓库地址:https://github.com/mtianyan/DjangoGetStarted

  • 针对许commit: 留言板前端页面显示。本次内容了教程3-2了。

兴许现在公还当经过手写sql语句来操作数据库,当我们发矣orm,数据库操作变得异常粗略。这同有些节咱们来学习Django中的orm。

下如隙,稍纵指尖。没有安静的眼界,只有一定之光阴;生活的各个一样龙,每一刻还以变更在。在这辞旧迎新之际发表一下此时真正的描摹:毕业近两年,而自要这么,从一无所有的结业到现在一文不名的上班,只是心绪多矣有些惆怅罢了!这等同年半来说,从最初毕业毫无方向的雄心满怀到今筹备不展的绝不方向。

原生sql 与 orm

莫orm 的场面下message/views.py代码:

import MySQLdb

# 使用原生sql获取书的列表
def book_list(request):
    # 创建到数据库的连接: 指明用户名,数据库,密码
    db = MySQLdb.connect(user = 'me', db='mydb', passwd='secret', host='localhost')
    # 创建一个游标对象执行器
    cursor = db.cursor()
    # 书写我们需要的sql语句
    cursor.execute('SELECT name FROM books ORDER BY name')
    # 对于fetchall()的结果做遍历,将遍历回来的结果当做数组,取第0个值name。
    names = [row[0] for row in cursor.fetchall()]
    db.close()

也好可以于数据库字段的询问以及运用类似的一个性能一样简单?没错登登登:orm上场了

book:name

book.name
book.save()

Django的orm就是为为我们不再写点那样的语,而是像要操作数据库像使用类和类属性一样。

2015当下同一年从初期毕业走来校园做美工,到逐步转向运营,在这个过程中已想过去召开大神(程序猿),之前大学闲暇的余还见面错过学点代码啥的,但最终自己发觉自虽长的莫那夸张,但也不要那么安静,感觉成神的行程不太符合自己,至多为即是作为一种植兴趣爱好罢了。而无意了解及就世界上还有产品经理这样一种植人,看了来乔布斯、张小龙之类的故事,感觉就虽是一个于大神还牛比的职业,顿时觉得自身认识的社会风气原来不是那么。

创我们的models

verbose_name:对象的人类可读之称呼,单数:

verbose_name = "pizza"

class Meta,内嵌于 UserMessage 这个类的定义中
如果 class Publisher 是顶格的,那么 class Meta 在它之下要缩进4个空格--按 Python 的传统
你可以在任意一个 模型 类中使用 Meta 类,来设置一些与特定模型相关的选项。
如:设置ordering = ['name'],默认地都会按 name 字段排序

message/models.py:

# 继承于django.db.models.Model
class UserMessage(models.Model):
    # 设置最大长度,verbose_name在后台显示字段会用到
    name = models.CharField(max_length=20, verbose_name=u"用户名")
    # Django提供内置的邮箱字段会帮忙验证` default_validators = [validators.validate_email]`
    email = models.EmailField(verbose_name=u"邮箱")
    address = models.CharField(max_length=100, verbose_name=u"联系地址")
    message = models.CharField(max_length=500, verbose_name=u"留言信息")


    class Meta:
        verbose_name = u"用户留言信息"
        # db_table ,这里我们让它自动生成所以不用指定

此刻我们实施makemigrations messages会晤意识并没改变。

mark

因setting中我们从不挂号我们的app: message

注意:新建的app都要在setting中注册

今天、随着社会之上扬,科学技术的开拓进取,整个社会的分工出现了显眼的转变。统一之社会特别工作分工方式既不再称给今日的社会发展,而是转而出现了社会垂直化精细分工。即作为产品人,你或每面的学识且亟需了解有,但是最终想如果于斯社会立足,还是得发谈得来的如出一辙艺的长才实施。

每当setting中登记我们的app

DjangoGetStarted/settings.py 大概36行INSTALLED_APPS:

`INSTALLED_APPS`
[
    前面的不用变,后面新增下一行
    'message'
]

此刻我们重新运行Tools 菜单下 Run manage.py Task会提示:

假定提示:

SyntaxError: Non-ASCII character '\xe7' in file D:\CodeSpace\PythonProject\DjangoGetStarted\apps\message\models.py on line

告留意或您忘记在描绘过中文的地方长:

#coding: utf-8

小心得加以在率先或者二行。

下一场实施下发号施令:

makemigrations message

mark

migrate message 生成数据表

mark

前往Navicat验证:

mark

足见见我们的数据表已经创造成功。默认数据表名称为app名称_类名转换为小写
自动生成的id作为主键。

当见到这职业并开询问后,感觉一切事情似乎都是吗好量身定做的,我是初次座啊!我吧没艺术家的大开大合;没有先后猿完全理性的逻辑思考;我喜爱自己看好办事,把温馨之世界掌控在投机手里;喜欢带点理性又带动点感性的认知世界,想工作;懂点设计,还懂点代码;喜欢点理论还喜欢点哲学;喜欢广猎百家所长;想只要把同码业务为到最好致;我耶想做一个成品被世界都来所以他,……。艾玛,这不纵是啊自我量身定做的啊!然后以至于我就算决然踏上上了立即条未归路,开始了一些基本技能的习。老人说得好:工欲善其事必先利其器!想如果进一个初的行当(从未了解之正业)肯定得事先控有基础,和学武打拳一样得事先将马步扎好。于是乎自己单方面开在早已有些工作,一边花了一半年岁月去学了有关的工具软件,当时感产品经营真是最牛叉了,想使起年晚很关系一庙会,而真相是不是为实在要这样想象的如此尽如我意,下面就来拘禁经过。

Models讲解

除过普通的对应数据库的字段类型如CharField,还有为数不少高档项目。如EmailField提供email验证。

    models.ForeignKey     # 外键
    models.DateTimeField  # 时间字段
    models.IntegerField   # 整型
    models.IPAddressField # IP地址
    models.FileField      # 上传文件
    models.ImageField     # 图片

ctrl按停+左键点击models
进入后点击fields拖到文件开始好看出所有字段:

__all__ = [str(x) for x in (
    'AutoField', 'BLANK_CHOICE_DASH', 'BigIntegerField', 'BinaryField',
    'BooleanField', 'CharField', 'CommaSeparatedIntegerField', 'DateField',
    'DateTimeField', 'DecimalField', 'DurationField', 'EmailField', 'Empty',
    'Field', 'FieldDoesNotExist', 'FilePathField', 'FloatField',
    'GenericIPAddressField', 'IPAddressField', 'IntegerField', 'NOT_PROVIDED',
    'NullBooleanField', 'PositiveIntegerField', 'PositiveSmallIntegerField',
    'SlugField', 'SmallIntegerField', 'TextField', 'TimeField', 'URLField',
    'UUIDField',
)]

对于自己个人来说:一桩事情虽然结果非常重大,但经过同样为要。我就有十分丰富一段时间特别喜欢同句话:“尽人事听天命!”,做自己能开的,放下自己不能够召开的(这句话应该还是在自身初中的时候见到并喜爱的,那时候起成绩糟糕,也未思模仿,于是便喜爱了这句话,觉得古人说的非常对,我就是未是读书的人数,干呢非要是看为……,当然后面好像不这么想了!)。至于后面的反就非多说了,每个人走过的路途不尽相同,哪怕同一家庭之中的兄弟姐妹,同一班上的同学朋友,一直于同企业一如既往单位的同事等等。每个人还发出友好人生之转会点,生命中究竟会于某一个时而还要有些口或者部分事促使您真正失去改变(用平等句话形容就是是:意外与明天,谁为未晓谁先来),不要说您莫会见转移,一个丁之变更是一个用时积蓄的业务,当一文山会海的因果报应呈现于你前面的上,你本来之会失去想想,会发出变更,这吗是胡多人会晤于雪脑子,然后还要会醒来(说基本上矣……)。

介绍字段参数

CharField得指明默认最可怜长。null=True,blank=True指明字段可以呢空
defalut = " "凭借定默认值。

name = models.CharField(max_length=20,null=True,blank=True, verbose_name=u"用户名")

id是自动生成的,如果要由定义主键,message/models.py中上加字段:

object_id = models.CharField(primary_key=True, verbose_name="主键")

这会儿点击Tools 菜单下 Run manage.py Task输入makemigrations message

mark

知识点:CharField必须指明最要命长

object_id改为:

    object_id = models.CharField(primary_key=True, max_length=50 ,verbose_name="主键")

此刻点击Tools 菜单下 Run manage.py Task输入makemigrations message

You are trying to add a non-nullable field 'object_id' to usermessage without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py

冲提示信息,我们得让object_id增补加默认值:

    object_id = models.CharField(primary_key=True, max_length=50,default="", verbose_name="主键")

get新知识点:object_id必须有默认值

输入2 退出:然后输入makemigrations message

mark

再度输入下面发号施令生成数据表

migrate message 

好望上图过程被见面告知我们召开了争变化,如去了默认系统生成的主键id
,变更了name。新增了我们的object_id

造Navicat验证右键设计表:

mark

足看出object_id已经变为我们的新主键。

具体确实那么般美好、一帆风顺呢?带在同一粒朦胧的良心,4月鼓起勇气辞职面试了产品岗位,而自的造化还免是一般的好,居然通过了面试(当然我好或知道的,我委吗都不掌握,除了会为此几独器……)。早上10:00过来今之商号面试了,当时HR告诉自己,今天而的依附上司不以铺,回去等信息(其实就尽管从无存希望,人家自然是娇羞直接拒绝自立刻白痴,在受我找借口吧)。但是由一颗心的执行着,我就这么带来在忐忑的心情进入了“漫长”而经人的等候(还记面试那边是4月15日-周五-裸辞第二龙),等交周末自家实际等未下来了,主动打电话问了面试我之HR,感觉蛮尴尬的,你究竟要无使我什么,不要你吗告诉我一下什么,是吧!男子汉大大丈夫,18年晚哥又是同等漫长好汉(没这么重啦……)。然而谜底是HR给了自一个不行懵逼的对答:你规定要来也?要来之言语你周一来报道!(我确实蒙了,wo艹,我来面试还打电话让你你道握手豆你玩么,居然问我是否确认真的只要来),然后自己以纪念,是免是及时号和之不胜啊?怎么会这么问吗?或者是内竞争可以?或者是时刻加班?或者是店只要砸啦?但想想这温馨失去面试的上不像如果超过的法呀!我真懵逼了!(其实这里说明,机会是自己争取的,只有协调主动的争取机时才可能会见属于您;在面试结束不使就是杳无音讯的沉默了,积极主动的夺沟通奖可能得任用的几乎统领会大大提高)

介绍Meta信息:

Meta信息遭到我们可以指定常见的种:

db_table = "user_meassage"

打定义后生成表,表名会与我们的保持一致。而无见面前缀appname如:message_

此间因为咱们曾经特别成了了,就不用做说明改变表名了。

ordering = '-object_id'

ordering指定默认排序字段,如:就会为object_id倒序

verbose_name_plural = u"用户留言信息"

verbose_name_plural:复数信息,便于人读。否则会当后台显示用户留言信息s

早已修完了orm用数据表映射表。
github地址:https://github.com/mtianyan/DjangoGetStarted
此节了对承诺github commit:

留言板数据库orm映射成表完成。内容了教程3-3说尽。

带动在这么懵逼的状态和同一粒惆怅的心曲,周一我来了铺面,感觉还坏对的啊!在我们立刻根乡僻壤的地方,能闹这般大一个办公室场地,不错啊!占了全套一交汇楼(妈蛋,面试时来回匆匆,都无好好看两双眼),心基本安了下,然后开始了讲工资,年轻人嘛,虚心点(其实是痴呆),感觉温馨什么还非会见嘛,能而团结就是正确了,像受了大半十分好处一样,也不敢要工钱,人家问我及同小有些,也特么老实,也便活生生说了,其实人家还很好心的,给了本人一个还算是假如未是的工薪,年少人傻嘛!就这么干到现行。好吧,也当是啊年轻积累经验吧!从入公司来说,一个月无看到好的上司,当然为尽管半个月基本没有提到啥事(期间写了平首公司之制品体验报告)。期间因为也没有见了当,也无造到底老板是一个哪的人头,只当QQ上且过你一两不善,让自身形容了个店去年(2015)年开的如出一辙放缓产品的体验报告。当是的确是甚都不见面,在某网站东翻翻,西翻翻,终于寻了个模版,跟着写了只现行中心看不下去的体验报告,我估算马上老板看了便想拿自己辞职了…..(其实是说写得是,但是好或者掌握自己写的哪些,或许夸自己只是不思吃新人太可怜压力)。

3-4 django model的增删改

github仓库地址:https://github.com/mtianyan/DjangoGetStarted

  • 达到小节完成代码对应commit:
    留言板数据库orm映射成表完成。内容了教程3-3扫尾。

message/views.py中:

from .models import UserMessage

用我们刚刚创建的model,import进来。.意味着是同眼前同级的目。

仍下图所出示添加相同长测试数据。

mark

然后还我们的getform道中添加底下代码:

def getform(request):
    # UserMessage默认的数据管理器objects。
    # 方法all()是将所有数据返回成一个queryset类型(django的内置类型)
    all_message = UserMessage.objects.all()

    #我们可以对于all_message进行遍历操作
    for message in all_message:
        # 每个message实际就是一个UserMessage对象(这时我们就可以使用对象的相关方法)。
        print message.name

    return render(request, 'message_form.html')

调剂过程:

mark

  • 点击上图小红框位置,打及断点。

  • 点击Run -> debug后:在浏览器里打开:http://127.0.0.1:8000/form/

mark

  • 弹来高达图表示已经进入断点。

mark

  • 这会儿鼠标左键点击:all_message.可以看出这是一个{QuerySet}类型的对象,里面存放着[<UserMessage: UserMessage object>]

  • f6万一运行至下一样步。此时凡的值窗口内可以见到message的价值。说明我们遂获到了数据库的价。

mark

接下来立即无异于等于就是基本上半个月,老板终于由京都总公司归了,对于自的话就算好信息,其当京都这一个月也咱(当时本身吧勉强算是公司产品部的一模一样号了咔嚓!)带会来了一个眼看羁押起“颇为不利”的门类。开会说得慌简单(还记那时候自己进来这个职业来参加的第一个会议),需求是:根据客户及市场实际需求做一个微信端商城,然后还连后期的销售运营工作,公司于产品销售中拿走销售提成(30%)。当时挺急的,项目方是京沿的均等小海洋牧场(不造是什么吧,其实我吗不之,你便管他想念成是蒙古放牛羊一样的哪怕好,只是这里面养的凡“海鲜”而已……)。项目并非自己付出,用别人第三方的都可。当时一样听,这不纵是自前多年涉嫌的尽本行吗?微信网站啥的自在实行啊,当时盛极一时之呦来褒、微盟、云微客、分销客、微三云之类的东西,我闭着眼睛便理解其中有吗(有点夸大哈……),但是确非常成熟,而且店还给配设计师,我实在都惦记说毫不这么累啦,我一个总人口保守估计一个周之内叫你搞定!然后就是同一入我能搞定的指南接下这个“项目”(也想过,尼玛这样实在可以为?那么大的酬金,人家也甚索你啊,然后以想可能真的是钱大半人口傻啊!!!全然不知,坑偶多老……)。然而谜底很快即立即了Flag,显示貌似乎真的没自己怀念的那美好。

filter取出指定要求值

all_message = UserMessage.objects.filter(name=' mtianyan', address='西安')

mark

随点调试过程还调试好看看咱们同样取出了价值。

有些练:将名字改成也跟好数据库存放值不同之。查看结果。

mark

化了空列表,说明整对。

废话太多,中间经过尽管不一一描述了,这个路——也就算是自己的处女作,其实说真话做得起接触糟糕。当时承受这东东自家确实什么都非清楚,搞了区区个原型出来差点吓着老板跟研发的父兄们了(还有产品的妹纸……),现在羁押起呢吓到了自家要好。我都以怀疑研发的哥哥们是怎码出的,过程异常之苦,事实证明产品没有实战的彩排基本以聊天,上战场就全都乱了阵脚。废话,直接上图:

拿数据存入数据库

摸底:django/db/models/base.py 源码中提供save方法

def save(self, force_insert=False, force_update=False, using=None,
             update_fields=None):

getform方法被补充加代码:

 # 存储部分

    # 首先实例化一个对象
    user_message = UserMessage()

    # 为对象增加属性
    user_message.name = "mtianyan2"
    user_message.message = "blog.mtianyan.cn"
    user_message.address = "西安"
    user_message.email = "1147727180@qq.com"
    user_message.object_id = "efgh"

    # 调用save方法进行保存
    user_message.save()
  • 从上断点:如下图。

mark

  • 直惦记f6但步调试,直到如下图:蓝色到return语句

mark

得以产方值窗口查到值

mark

深海牧场微信商城

Navicat进行验证

好看来成功的互补加了数量mtianyan2

mark

扣押罢是匪是怪怀念那个的发,东西非常少,很粗略,但为酷Low,哈哈,要看了后台就重新想煞了!好当拖欠片段东西要基本没获得下,说实话,现在于自己再次开呢非可知担保好及粗。

如何从html的付出中获得到数量并保留进数据库

templates/message_form.html:

mark

method是post。action就是因于我们当urls.py中安排的/form/
前面必须加以斜杠指根路径下form
里的input会自动将价值传递让后台:这时我们便可以以getform中得到到刚刚传递过来的价值。

运作项目:然后输入需要填的值。点击提交:出现403荒谬

Forbidden (403)
CSRF verification failed. Request aborted.

因提示:我们的页面没有开展crsf的说明,这时django的平安机制,不同意任意form都往后台提交。

知识点:所以我们用以html页面被入csrf_token

    {% csrf_token %}

mark

故那行删除掉。打及断点

mark

刷新页面并交。这时候在值窗口可看到request对象下之POST中存放着咱交的多寡。内容如下

<QueryDict: {u'message': [u'\u54c8\u54c8'], u'address': [
u'\u897f\u5b89\u5e02'], u'csrfmiddlewaretoken': [
u'uIYSMOTWPJBPOPucRwd3uDaWtCzeEaem'], u'name': [
u'\u5929\u6daf\u660e\u6708\u7b19'], u'email': [u'1147727180@qq.com']}>

mark

数据为dict:key-value 形式储存 key是由于如下图html中的name所决定对应的。

mark

先是浅原型出来基本没考虑用户采取状况,和真实需求什么的,完全是团结想方就是召开了,然后评审的结果就无须说了,想想就了解哪!一直顶第二坏、第三差之后才改成了今是法,最后文档出来测试研发一面子懵逼,标注之类的描绘的混的,现在好看在也是次体面懵逼。整个东西打原型到成品到也客户做商品详情文案到终极做营销H5,两只周时间,小白就做得实在挺累的,但是得吧要满的,虽然这个类别现曾经大了(当时凡定向面向首都用户之,妈蛋人家雷同听是非常海域的海鲜直接就是回身走了……,怪不得人家被30%的触发,所以说啊,天上没有丢失馅饼的事体……),踩在这曾经死的色头上自己算是有矣片实战经验,勉强“进入”了活岗位。

数据库新增。

request.POST惨遭多少取出,存入user_message对象

 # html表单部分

    # 此处对应html中的method="post",表示我们只处理post请求
    if request.method == "POST":
        # 就是取字典里key对应value值而已。取name,取不到默认空
        name = request.POST.get('name', '')
        message = request.POST.get('message', '')
        address = request.POST.get('address', '')
        email = request.POST.get('email', '')

        # 实例化对象
        user_message = UserMessage()

        # 将html的值传入我们实例化的对象.
        user_message.name = name
        user_message.message = message
        user_message.address = address
        user_message.email = email
        user_message.object_id = "ijkl"

        # 调用save方法进行保存
        user_message.save()
  • 打断点在产图位置:

mark

  • 进入调剂:点击点击method:是get请求。因为咱们连没按提交按钮,而是get这个网页

mark

  • 点击f8继承运行我们的门类 浏览器中填入表单内容点提交。

mark

因为这次是表单提交,已经变为了post方式。按f6拓展单步调试。

直接单步到如下图蓝色

mark

此时候值浏览窗口可以视

mark

自我批评我们的user_message对象的属性是否就全抬高上,

下f8 继续路并去Navicat验证

mark

好望咱们的数据库被已经新增,标志在我们早就成功存入数据。

这已经是6月新了,公司也打懒散状态上了不闲散状态(整个企业了了年尽管比如泄了欺凌之皮球,一顺应要充分无活的旗帜,听说最近个别年都如此,一直到五六月才缓和过来,小白这几龙呢如泄了欺负的皮球,还没有缓过来啊),开始了开协调之类型。也即是眼前小白正于有的星期日夜间做客服的是东东(http://www.51nhds.com)。虽然在上一个项目上自认为已经走了很多坑,但做产品的坑却不是当时的我或者说现在的我所能真的理解的,这一年下来才真的知道自己在产品这条路上真的还只是个小白,很多坑真的得靠时间和经验来沉淀、积累。这不是一个可以一蹴而就的职业,也算是明白为什么很多人说:从现代国内的教学体系里完全不可能培养出产品经理来,相对于产品经理这样开放的职业,需要博学而多闻、需要拥有一颗“真爱之心”,是一个不断尝试、不断去创新的职业,而现在的应试教育模式是可以说完全不适合的(当然这里不是说应试教育的好与不好,我也没资格说好与不好,这里只是陈述这个事实)。

去除数据。

对此查询及的数量做去:

# 方法2 :filter取出指定条件值,逗号代表and 必须同时满足两个条件才返回。
all_message = UserMessage.objects.filter(name='mtianyan', address='西安')

# 我的数据库里保存着可以匹配到该条数据的一行。

# 删除操作:使用delete方法删除all_message

all_message.delete()

    for message in all_message:
        # 删除取到的message对象
        message.detele()
        # print message.name

点击run并访问:http://127.0.0.1:8000/form/
进Navicat进行认证。

mark

足见见我们的那长长的mtianyan + 西安之数都被删去。

由来:我们已经学会了新增,删除,查询。

本节终止github对承诺commit:

django model的增删改数据库。本次内容了教程3-4。

接轨到如今一直接了年会大师平台下之季只稍项目:背景墙(图片/视频)、年会邀请函、礼物榜寄礼品的计划以及年会颁奖。几单项目下呢于自身尝试遍了产品路上的坑,毕竟是小白,加上我及时人起一个坏的惯很多工作毕竟好自己失去琢磨、自己去证明。虽然好为常常说站在巨人之肩上我们会爬得重快、走得还远、站的更强,叫借势吧,通俗点就是于旁人的经验,向其他人请教!但自我偏偏喜欢作死,因为自总看多政工或者友好失去证明才能当真懂干什么会如此,产品路上的坑对于自的话呢是这样。说实话,前面两只东西公司研发的同窗估计还未思做自我的东西了,还好号来几独研发组分别分开对接,而未是接一直连一个组,相对来说可能于时刻和空降以及情感上且聊缓和,自己吧酷尴尬的,自己踩坑还得带齐同一堆积人随即我踩,不过总的来说经过几单门类实战下来,收获广大,现在好多了。

3-5 django url templates配置

项目Github地址:https://github.com/mtianyan/DjangoGetStarted
本节初步对应相应Github的commit:django
model的增删改数据库。本次内容了教程3-4。

本节将介绍url的布置,以及如何用数据库数据填充充回前台html页面。

场景:只同意用户改mtianyan,如果没就长,如果生就是揣使用户可改。

第一独品类是背景墙,说起来确实非常简单,还无ppt强大(差多了……)。就是一个图纸/视频以及背景音乐、特效的做作为舞台背景,就如此一个概括的事物,我啊克拿他做出过多坑来。第一只坑:预览的坑,我们的大屏比例是遵照专业高清大屏的尺码比例1920×1080(16:9)来开的,因为预览图的深浅比例还跟社稷师撕了同一戛然而止,而最后之结果是自败下阵来,预览图被做成了1:1之方形。导致本用户上传图片后即使咨询,你们及时怎么回事,按照你们比例做的图什么,怎么变形了(大哭);第二单坑:上传的坑,为了缓解用户高达传大体积的视频或音乐失败的题目,我们召开了断点续传(图片、视频、音乐),因为此事延迟上丝一个健全,上线后还在持续改(大醉),这为是成品与研发双方都并未足够的更去所给予;第三只坑:为了缓解用户视频转码难,不会见变动之题材,在线解码的题目,也是盖是坐大家还并未经历,首先不去阿里服务器能够改变哪些格式,纠结与验证花了一如既往上,然后不掌握原来视频转码除了担保原视频能播放、后缀以我们的解码范围以外还索要视频本身必须带来及相应之文件格式参数,这个是上线后才发觉的,然后便是改成后怎么通知用户之题目(直接举报状态),这么一个东东啊纠结了大半平龙;第四个坑:我们究竟允许用户传多大,是否限数量,引起这个问题的来头是最小莫能够满足要求,太好至时刻播放会有问题,且转码什么的还得开销,最后汇总各端情况被起了一个脚下来拘禁大家还能够经受的价(图片5M里面、视频1G内、音乐10M中),这终究一个不行广泛的范围的,虽然要来微量用户会看不够,但好以未多,而缩减一下吗完全能够领;另外就是是只要无若活动开缩减的题材,不开压缩在线播放对网速和电脑硬件性能都发出老高的要求,而我辈才起来、没因此用户数量,目前咱们的用户之具体情况不打听(用什么电脑、什么系统、浏览器、网速等其他因素……)。就这么一个大概的职能时比较严重的哪怕出这样多坑,详细情况其实更重(大哭)。

取出数据

message/views.py中的getform方法中

    message = None
    all_message = UserMessage.objects.filter(name='mtianyan', address='西安')

    # if 判断是否存在数据
    if all_message:
        # all_message是一个list,可以使用切片。
        message = all_message[0]

这里注意将前面几节约写的删除掉

感到甚简单是匪是……

用数据填至html中

老二个类型是邀请函,这个事物在成品里面就招了冲的座谈,是和现有的H5如易企秀、MAKA等营业所合作(用他人的接口)还是好单身开发,是做一个想易企秀一样的事物或一直开一个SX的沙盘,是背景以及情节未干或者开一个更SX的只能修改字段的沙盘呢?这些还经少天之议论,过程被留存诸多争,个人提出的方案是咱们既然没必要举行一个轻企秀这样的充分东西,也决不开一个太SX的模板。我们可去好企秀、MAKA这些平台做调研,同时分析传统邀请函的必需信息,了解用户为什么要为此是东西,然后做片模块化的沙盘让用户可自由组合,但是倘若让用户一个直接会就此之功底模版(参考有赞微商城的做法,满足不同品种用户的需),但说到底是让PASS掉,有时候自己还在思念,是上下一心最好好妥协了啊?或许是吧!但说到底这个事物本身在腾讯旗下之“微现场”看到了,当时微现场也尚从未达标丝,当初底构想基本是如出一辙。另外当里头的地图导航而无使做在线地图的接口问题呢是同研发斯了一半天,我觉得格外有必不可少,研发觉得没有尽特别必要,且需花费很多时光,最后老拍板说非开(结果虽是出后老板问我何以没有开,三体面懵逼)。这是亚破举行手机端的物,第一赖就是海养牧场那个了,第二不好在大哥大端经验还是起把积累之,至少没有如第一不善那样有有些那个低级的问题,同时由当下是一度是9月新了,研发资源紧,给本人之流年
不多,因此还吃研发砍掉了多一半底情(很不好过……)。

修改return render

return render(request, 'message_form.html',{
        "my_message" : message
})   

此处前面的”my_meassage”是咱们可以自动命名的。会出一个my_message靶就返回前端页面。

页面布局其实还是可的…..

在前者页面被放大入值。

否input系列标签添加value:
使用my_message.name获得到我们传递过来的my_message目标的属于性值。

        <input id="name" type="text" name="name"  
        value="{{ my_message.name }}" class="error" placeholder="请输入您的姓名"/>

恳请自行完成姓名,邮箱,联系地址三个input标签。

textarea标签添加值

mark

        <textarea id="message" name="message"  
        placeholder="请输入你的建议">{{ my_message.message }}</textarea>

运作项目,访问:http://127.0.0.1:8000/form/

mark

打响!!我们既拿后台数据库数据成功展示暨前台。

其三单种类是礼物榜,这是公司今年色中唯一赚了钱之事物(宝宝心中苦,但宝宝也乐着说),虽然整体看来完全是无效,但产生得赚点总比没有好嘛,是吧!也只能这么安慰自己了。项目做下自我的首先觉得是一直由回不思量使的,因为极度可恶了,效果啊坏,但随即既是10月矣,没时间了,最后逼于岁月以及资源的关系,我又降了——就这么吧!用途就是是以全体年会任何时间一旦打开送礼品观众都得以吗节目演员送礼金,后台统计金币数量。表达观众对节目演员的支撑与可用于节目评选,场控人员时时可切出礼物榜(礼物排行),而多人于年会被怀念要拍老板还是上司甚至自己暗恋的女神/男神什么的就会见破产钱拍,思路来直播送礼,我们也是刚用观众的之心理,总的下去挣了大半10w,虽然少,但随即是白赚的(基本不占用多老大服务器资源,因为内容是缓存到用户端本地的,后台就担负统计下数据,而服务器人家送或者未送我们还是如果起的……)。

template模板渲染着的有用法。

在我们的template模板被呢即是form.html中,不同意我们写Python的语法,
它们提供了相同模仿自己之内建标签。

官文档中template内建标签从而法传送门

上,遮丑得管与伦比啊……

常用的几乎种植模板标签介绍:

初始还有一个构想,借用直播的礼金体系,不只有送,还能换,提现,即取得礼盒的人头可以报名提现(平台扣去得比例),而送礼者获得积分可用于抽奖或者直接换其他平台物品。这样可给送的总人口没后顾之忧(目前送了咱是匪尚钱,送的凡当真钱白银啊……),而这样可于年会真的欢才畅起来,公司花几十万处年会不就是深受大家在回家前开心一扭、给来才艺的人口一个出示的机、提升大家的沟通交流机会,韵养公司企业文化也?所以直播的当下套路于年会现象被依旧能够走通,事实证明也是这么(很多公司听说送了是白送直接回限制员工充值……),但是最后抱总拍板不开,那便无做吧,我还要降了,谁为咱是新娘为,产品前也尚未什么数据积累,大家开心就吓!

if - else

合法提供模板如下:

mark

个体执行:

mark

满足if运行结果:

mark

不满足if:如改为my_message.name == "mtianyan1"运作结果:

mark

季只类别颁奖功能,这是开得最坑的一个意义,不光是事物坑,我好为坑,研发为坑,这个东东算将店基本有的研发转了一致尽。需要组合之前的旁武器的数码,统一实现吗打跟颁奖仪式发奖的力量,且要求于成品上要上一致性(为了统一交互,达到所谓产品的一致性我修改了三独十分本,大哭……),还无能够去动之前的器械,因为做这东西都是11月了,时间非常困难了,不敢动其他东西。年会将降临,公司之营业移动既初步,各个研发组都还有温馨之职责要举行,这个东西了是董事长横插进来的。最后由于咱们架构师讨论决定直接每个组抽调一两名成员协助完成这项目。当时本身便以思念以此东东估价如举行砸,事实是不美好的作业接二连三如期而至。

ifequal & ifnotequal

mark

官方文档解释:ifequal a b
相当于f a == b.ifnotequal尽管如此相当给if a != b

私执行:

mark

结果吧:未找到中文昵称

自从互动需求及终极自己一起出口了三不行详细要求宣讲(还带动在分析数据、接口等),也转移了少蹩脚不行需求(修改了三独雅本,在活形象及才终于得矣下来)。因为凡逐一组还发生成员以做,有些人惟有是相当接数据,因此上线必须联调,而联调的下大家坐于一齐,懵逼了!!!你的想法与自家之咋不一样的,我们得如此的数额,你吃我之歇斯底里啊,你怎么是那样的呀!我错。尼玛完全对未齐号啊!然后便是本人生重新召集所有相关人仔细为她们分析了数码逻辑,当场确认有的多寡对接能无克通上,怎么连等同样多级相应有项目经理做的事务,并记录会议内容邮件抄送所有人。开竣工会自己真的坏懵逼,当时开班做的时刻不是赤诚的报告我并未问题,这些你们会协调考虑的为?我想骂人,没道,谁受产品是我们自己之呢,再推呗。因为各个研发组之间无关联的题材造成上线延迟近一半单月(后面研发自己联调就花费了一个健全,测试联调又消费了两三天)。

slice

mark

法定文档解释:其实就是是片操作。从头开始切到第n单。

私执行:

mark

本来mtianyanmtianyan1凡差的,但是片后前八个相同。
运行结果显示 :对应中文昵称:天涯明月笙

实质上还是小康的…..

URl的号设置技巧

DjangoGetStarted/urls.py:

r'^form/$'增补加别名:

    url(r'^form/$', getform, name = "form_new")

过去html中修改action地址为下所示:

<form action="{% url "form_new" %}" method="post" class="smart-green">

这我们只要更改urls.py中的r'^form/$'未需再次修改前端代码中值。

花了如此多时光跟生机该说至少问题未多了咔嚓,测试为测量了,我自己基本功能也走了。但是尼玛上线用户采用,各种题材接踵而来,直到前几乎天,也便是中心用户年会还多了了,才好不容易基本完善了,这简单上发奖功能还为无来题目了,中途一直发微题目,改了这来良,改了颇来这。总结:就是毫不擅自相信研发在成品方面的逻辑思维能力和沟通能力,他们多时节真只是实现而的机能而已,不会见失掉思的;至于沟通即他们沿着在坐于一道或者还是得你去推进沟通,不然你会收什么的结果而了解的!

url先后顺序问题

注意url匹配规则遭必定毫无忘记/$号代表为form/完的才会有效。不会见于后连续配合。比如没有/$

    url(r'^form', getform, name="form_new")

这我们进浏览器访问时输入http://127.0.0.1:8000/formemmm犹足以吃响应。

mark

特意是要是下还部署有让这个规则包含的条目,会生出被形容以再度指前之阻碍停得不顶正确处理的Bug。

mark

达到图我们是思念要叫formtest响应admin.site.urls。但是会让form提前拦截停。

因此我们肯定要是顾加上/$符号。

从那之后我们完成了留言板项目:学习及了Django必备的基础知识。
下同样节我们拿起我们的进阶学习:开发在线教育平台网站。

本章结束:

本着承诺Commit: 留言板项目上就,本次内容了教程3-5。完结,撒花。
项目Github地址:https://github.com/mtianyan/DjangoGetStarted

如上基本是刨坑的废话,哈哈,到此处实在您为堪笑,哈哈!!!

以下说说就同一年之所得所失:人生来得自然起失去,不要光看见你获取的,却看无展现你去的;也变化只盼你失去的要看不到你沾的!前者易傲然自满,终失去一切;后者易自惭形秽,不敢抱有。

近来深夜尝听爱经解读:人生什么最要害,定位及可行性。定位是什么?即我们现在底“地址”,要到的“地址”,至少有矣区区个点,然后才发出矣方向;最终决定你是不是到极限的精神原因未是你的快发出差不多快,而格外君的自由化仍不准,在错误的趋向达成您独自见面越走越远,当然可能远方来还美的眼界。而容易经最基础的即使是一贯,讲究以卦位定乾坤:六阳为男性,六阴为坤。太极生两礼,两仪生四象,四形象生八卦,八卦衍天下。天地乾坤变幻无穷,终其同乎,卦也,卦者,位吗。这是怀念说做同件事开始的初定位好要紧。道家也发生说话:道生一、一生二、二生三、三生万物、万物无极;此处无极其不是说并未终点,而是说不是从未有过终点。道家云:阴阳循环,佛语云:生死轮回。皆由吃易经:天地无极,物极必反。

管这些用在生活中、哲学里、甚至是咱的成品达到,同样适用。产品怎么诞生,因为发要求,当然多黑需求(其实需要没有真伪,只是看数据、看现象、以及社会转变)不以谈论范围。产品人做产品极紧要之是啊,不是一个按钮一行字的优缺点与否;也未在于一个功力,一个页面高低矮丑;更要紧的凡产品一定。很多活可能你只是从中路接手,而休是一律开始你虽厕,但随即并不矛盾。你独自待了解产品现在在啊位置,将来要是走向如何终点(目标),不要就此啊世界变化太快的谎言来诈自己,变得是路,不是终于点。贵阳大凡贵阳,北京凡是京,中间不论多少湖海山川、多少公路铁轨,北京还还是北京,只是不同的口活动的路程或不同、用之工具不同而已。而活也是这般,目标是好既定的,运营的方法可以自由应变。

一个产品一定、目标还非清的成品,再是吃多少人力物力,多少资源以方吧不自然生好之结果,当然这呢无能够绝对,大道五十,天衍四十九,而变谁吧说不清。剑走偏锋的行非属正常状态,而我们谈谈的成品刚刚休在斯。有矣醒目的活定位,才可能来不利的出品求,而连下去需要做的不是直接投入研发及资源去研发、推广,而是先夺印证要求。

小白认为产品之永恒应来自三独样子:首先从商业利益出发,没有商业价值的活到底不达到真的产品;其次从用户角度出发,没有用户与的制品未是好之活;最后由种类角度出发,适应现阶段生产力与物资的成品才是可自己之制品。

打字打废了……。

本次分享至者即了了,作为同一叫产品新人,会出那么些考虑不健全或是表达不当之地方,欢迎大家留言评论指或者加我微信:chengshinanhai261820,凌雪于这个等候与你同探讨、分享、等待与天王(卿)共勉**

最终愿与各位同事共同再接再厉,共同进步,越走越远。咱安梦想,屌丝终将逆袭!