python + django 学习(一)

来源:互联网 发布:淘宝钻石展位展现位置 编辑:程序博客网 时间:2024/05/22 14:57

100.注意事项:
类名第一个字母大写。

init(self)方法是特殊方法,是类在创建的时候自动调用的,就是构造方法
这里的self和java中this是一样的

init()中定义了别的别的属性,在该方法中注明self.属性=属性

def _init_(self,name):    self.name=name

实力创建:实力名称=类名(属性)
dog=Dog(“tom”)

实例使用方法和java中的一样。

Python中的继承:
父类写到子类前,子类在继承父类是:

class Erha(Dog):    def(self,name,age):        super._init_(name)        self.age=age

一个类中只能有一个_init()函数

101.django+python开发:

Python3.5 要对应django1.8版本以后的,否则兼容性有问题

卸载django的方法:
C:\Program Files\Python35-32\Lib\site-packages\Django-1.9.13-py3.5.egg
这个文件夹删除就可以了

django安装方法:
进入django目录下,可以看到setup.py,在cmd中写setup.py install即可

建立项目:
首先cmd进入你要创建的项目目录下,运行django-admin.py startproject projectname

启动项目:
启动项目是由manage.py完成的:
进入目录,可以看到manage.py,运行 Python manage.py runserver 0.0.0.0:8080
浏览器中输入localhost:8080即可看到最初的页面

创建数据库连接(app):
django-admin.py startapp appname
这个是这个项目的一个模块

  1. django中的页面语句:

拿去字典数值型:
{{hello}}
这里的hello是映射中的key,通过key拿到value。

条件判断:

{% if a and b %}{% endif %}或者:{% if a %}{% elseif %}{% else %}{% endif %}

循环输出:

#正想迭代<ul>{% for i in numbers %}{li>{{i.name}}</li>{% endfor %}</ul>
#反向迭代for循环结尾加reversed{% for i in line reversed %}
#判断比较结果:{% ifequal a b %}{% else %}{% endifequals %}
#django 注释{# 注释 #}
#过滤器 这里的过滤器和java中过滤器该年不同java中过滤器是通过判断字符编码,url等是否符合规定,给予通过或者不通过Python过滤器则像一个规范,把东西按照自己想要的东西输出几种过滤器:{{变量|规则|规则...}}{{munber|lower} 把number输出小写{{number|first|upper}}变量number数值首字母大写{{number|truncatewords:"30"}}输出number的前三十个字符{{number|addslashes}}添加反斜杠到任何反斜杠、单引号或者双引号前面。{{data1:date:"F j,y"} 格式化时间,重点{{number|length}}返回number的长度
#include包含标签这个个人感觉和jsp中静态引用和动态引用类似{% include "a.html" %}
  1. Python-mysql的数据库驱动文件
    http://download.csdn.net/download/hao930826/9604800
    解压,进入主目录,执行setpu.py install
    这是对于python3.5以上版本,因为,mysql暂时没有对他进行支持,知道3.4

版本带来很多的问题:
比如not such model ,没有该模块,一般报错是因为数据库连接出了问题。
在2.7之前,mysql连接用的是MySQLdb模块,到了3.0以后不再使用,而是pymysql。
但是Python代码任然会找员原来的MySQLdb。解决办法是,在intt.py 中添加:
import pymysql
pymysql.install_as_MySQLdb()

    104.
# Django 1.7 及以上的版本需要用以下命令python manage.py makemigrationspython manage.py migratePerson.objects.all()Person.objects.all()[:10] 切片操作,获取10个人,不支持负索引,切片可以节约内存Person.objects.get(name=name)
get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filterPerson.objects.filter(name="abc")  # 等于Person.objects.filter(name__exact="abc") 名称严格等于 "abc" 的人Person.objects.filter(name__iexact="abc")  # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件Person.objects.filter(name__contains="abc")  # 名称中包含 "abc"的人Person.objects.filter(name__icontains="abc")  #名称中包含 "abc",且abc不区分大小写Person.objects.filter(name__regex="^abc")  # 正则表达式查询Person.objects.filter(name__iregex="^abc")  # 正则表达式不区分大小写filter是找出满足条件的,当然也有排除符合某条件的Person.objects.exclude(name__contains="WZ")  # 排除包含 WZ 的Person对象Person.objects.filter(name__contains="abc").exclude(age=23)  # 找出名称含有abc, 但是排除年龄是23岁的
    105.
#'django.middleware.csrf.CsrfViewMiddleware',  #解决post请求403就是注释掉