zoukankan      html  css  js  c++  java
  • Django学习记录

    粗粗看完Tango With Django,对于Django走马观花看了一遍,记录下来方便以后总结使用。

    首先

    创建工程
    django-admin.py startproject testsite001
    工程和应用不同,一个工程中可以包含多个应用,默认情况下,启动工程之后,不加前缀的URL都会指向工程的目录,而非应用目录
     
    启动服务
    python manage.py runserver 8000
     
    testsite001/urls.py  负责所有URL路由
     
    创建应用
    python manage.py startapp <appname>
    testsite001/testsite001/views.py 定义主app的显示
    settings.py 定义工程设置选项
         INSTALLED_APPS   添加后续app
     
    west/urls.py 定义app路由
    west/views.py 定义app显示
     
    同一个应用下添加多个URL路由的形式:
    urlpatterns = patterns(
        '', 
        url(r'^$', views.index, name='index'),
        url(r’about/', views.about, name='about'),
    )
     
    views.py中各页面的返回值HttpResponse中,可以直接写html,能够被直接解析。
     
    直接引用模板可以通过views中的页面方法的render方法引用,render方法的第二个参数可以是字典,定义模板中的变量对应的值。
     
    模板中html部分,需要渲染的变量定义形式为:{{ <varNm> }}
    Django还支持引用静态媒体,在主工程目录下的settings.py中定义STATIC_URL和STATICFILES_DIRS,定义静态文件的目录,可以直接通过url中的目录结构访问静态文件目录的内容:localhost:8000/static/images/rango.jpg
    html文件中引用静态媒体时,需要在DOCTYPE定义之后引入staticfiles,后续的html代码才能够引用静态媒体
    <% load staticfiles %>
    html中引用static目录下内容:
    <img src=“{% static “images/rango.jpg" %}” alt=“Picture of Rango” />
    可以用类似方式在页面上引入css和js代码
     
    settings.DATABASES 定义数据库设置,可以设置数据库类型、驱动、用户名、密码、IP以及端口等。
    Django通过model定义表结构,model中每一个继承了models.Model的类都是一张表,类中的属性就算表中的列,属性不需要限制为self。定义属性常用的数据类型有:
    ChartField(max_length=) 字符串类型、URLField 存储URL,同样有max_length、’IntegerField’ 整数、DateField 存储datetime.date
    每个属性都可设置默认值 default=
     
    Django定义了模型/表的连接方式:
    ForeignKey 1对多关系的字段类型
    OneToOneField 1对1关系字段类型
    ManyToManyField 多对多关系字段类型
     
    创建数据库
    python manage.py syncdb
    设置管理员
    python manage.py createsuperuser
    更改模型或者表
    python manage.py makemigrations
    应用更改
    python manage.py migrate
     
    新定义的模型需要在管理员界面注册
    app/admin.py
    admin.site.register(Category)
    admin.site.register(Page)
     
    对于已经定义的表结构,可以通过Django在代码中直接操作
    from rango.models import Category, Page
    Category.objects.all()  返回已经定义的全部Category数据
    Page.objects.filter(*args, **kwargs) 返回符合输入条件的Page数据
     
    html页面需要的数据需要在view中的页面方法里定义,通过render传给网页,这只是静态方法,对于ajax,应该还有可以动态渲染的方法。
     
    urls.py中可以利用正则表达式从url中获取需要的参数或其他数据,将获取的数据赋值给指定的变量,可以传递给views中的对应页面方法,通过这种方式完成类似url的复杂映射。
    urls.py中:
    urlpatterns = […,
    url(r'category/(?P<category_name_slug>[w-]+)/$', views.category, name='category'),
    ]
    ?P<vari_name> 的形式,将正则捕获的值传递给指定变量,再传给指定的views方法
    views.py中:
    def category(request, category_name_slug):
         ...
    对应的views方法中,可以通过同名的变量获取urls中捕获的数据。
    在URL的正则表达式中如果使用了括号捕获但是没有指定变量,则会按照捕获顺序,作为参数依次传入对应的view方法中去
     
    Django的HTML模板中,引用render变量使用的格式是{{ var_name }},模板控制语句的格式是{% if something %} … {% else %}… {% endif %}
    注释格式为{# <a href=“#”>Anchor</a> #}
     
    Django中POST请求不能自动处理url末尾的斜杠,因此对于POST请求的url定义,无论是在模板中还是urls.py中,都需要注意末尾的斜杠互相对应
     
    Django中的表单form django中有form类,在页面上定义了form之后,可以通过指定form对象用于页面渲染的方式,使用form中的数据,或者在页面上定义form标签的action,通过submit方式提交表单内容。
    Django中的form支持csrf令牌,可以在一定程度上防止伪造请求。
     
     
  • 相关阅读:
    js创建json对象
    redis命令行清缓存
    查询某个用户所有新增的用户,本月新增用户,上个月新增的用户
    js处理el表达式
    调用上一个页面的js方法
    生成唯一code
    jeeplus中两个项目redis冲突问题
    $ 与 #
    字典表的维护
    将html文档转成pdf
  • 原文地址:https://www.cnblogs.com/harelion/p/5398161.html
Copyright © 2011-2022 走看看