| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
351 バイト追加 、 2020年2月16日 (日) 04:24
編集の要約なし
==[[Django APIs]]==[[Django]] | [[Python]] |
*http://docs.djangoproject.com/en/dev/
{{amazon|4048672096}}
===shortcut===
====render_to_response====
*テンプレートとともにコンテキスト辞書を与えると、テキストが描画されたHttpResponseオブジェクトを返すテンプレートとともにコンテキスト辞書を与えると、テキストが描画されたHttp[[R]]esponseオブジェクトを返す
render_to_response(template[, dictionary][, context_instance][, mimetype])
====Field.choices====
*選択フィールドとして、2 要素を持つタプルの繰り返しを利用する。
*[[Django ]] admin は、このオプションが与えら得れた場合、テキストフィールドの変わりにセレクトボックスを利用する。
from django.db import models
class MyModel1(models.Model):
*データベースのカラム名を指定する。指定しない場合、フィールド名を使用する。
====Field.db_index====
*True に設定した場合、以下のようにCREATE に設定した場合、以下のようにC[[R]]EATE INDEX 文を出力できる。 C:\work\py\django\mysite>>python manage.py sqlindexes myapp1
BEGIN;
CREATE C[[R]]EATE INDEX "myapp1_mymodel1_field1" ON "myapp1_mymodel1" ("field1"); COMMIT[[COM]]MIT;
====Field.db_tablespace====
*フィールドにインデックスを張る場合に使用するテーブルスペースを指定。
|False
|-
|値の正規化値の[[正規化]]
| True or False
|-
|}
=====例=====
from django.http import HttpResponseHttp[[R]]esponse
from django.template import Context, loader
from django.forms import *
=====【注意】required=False=====
<&lt;blockquote>&gt;Field の派生クラスは、バリデーションの設定が、required=Trueだが、required=False としないと、チェックONでない場合、form.is_valid()が失敗してしまう。<&lt;/blockquote>&gt;
====CharField====
====CommaSeparatedIntegerField====
====EmailField====
====FileField====
*[[Django Fileアップロード例]]
====FilePathField====
====FloatField====
====TextField====
====TimeField====
====URLFieldU[[R]]LField========XMLField[[XML]]Field====
==Forms==
|'' (空文字)
|-
|値の正規化値の[[正規化]]
|ユニコードオブジェクト
|-
:
*テンプレート
<&lt;form action='/hogehoge/' method='POST'>&gt;
{% if form %}
BARBA[[R]]:{{form.bar}}
{% endif %}
====TypedChoiceField====
====MultipleChoiceField====
====NullBooleanField====
====RegexField[[R]]egexField====
====TimeField====
====URLFieldU[[R]]LField====
===Built-in widgets===
====NullBooleanSelect====
====SelectMultiple====
====RadioSelect[[R]]adioSelect====
====CheckboxSelectMultiple====
====MultiWidget====
=====配列の各要素をループする。=====
*views[[vi]]ews.py
def index(request):
ctx = {}
return render_to_response('test/index.html', ctx)
*index.html
<&lt;table>&gt;
{% for i in rows %}
<&lt;tr><&gt;&lt;td>&gt;{{ i }}<&lt;/td><&gt;&lt;td><&gt;&lt;input type="text"><&gt;&lt;/td><&gt;&lt;/tr>&gt;
{% endfor %}
<&lt;/table>&gt;
*結果
[[File:0383_django_template_tag_for01.jpg]]
=====アイテムを繰り返し処理する=====
{% for itm in item_list %}
<&lt;a href="{{itm.detailPageURLdetailPageU[[R]]L}}"><&gt;&lt;img src="{{itm.smallImageURLsmallImageU[[R]]L}}"/><&gt;&lt;/a> &gt;
{% endfor %}
*2 つの引数が等しい場合にブロックを出力する。
{% ifequal style 'text' %}
<&lt;div>&gt;
スタイル変数が 'text' の場合このブロックを出力
<&lt;/div>&gt;
{% endifequal %}
===テンプレートの継承===
=====基底=====
*派生でオーバーライドする箇所を、block [名前] ~ endblock で作成
<&lt;!DOCTYPE html PUBLIC "-//W3C//DTD [[HTML ]] 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">&gt; <&lt;html>&gt; <&lt;head>&gt; <&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8">&gt;
{% block html_header %}
{% endblock %}
<&lt;/head>&gt; <&lt;body>&gt;
{% block content %}
{% endblock %}
<&lt;/body>&gt; <&lt;/html>&gt;
=====派生=====
{% extends "base.html" %}
{% block html_header %}
<&lt;script type="text/javascript"><&gt;&lt;!-- //--><&gt;&lt;/script>&gt; <&lt;title>&gt;Title<&lt;/title>&gt;
{% endblock %}
{% block content %}
{% endblock %}
===HTMLをそのまま出力する[[HTML]]をそのまま出力する===
*|safeとする
{{digest.summary|safe}}
{{ value|striptags }}
====divisiblebydi[[vi]]sibleby====
*値が引数で割り切れるかどうか判定。割り切れれば True
*mod 演算の代替として使える
=====例=====
<&lt;table>&gt; <&lt;tr>&gt;
{% for num in numlist %}
<&lt;td align='right'>&gt;{{ num }}<&lt;/td>&gt; <&lt;td><&gt;&lt;input type='text' size='6'><&gt;&lt;/td>&gt; {% if num|divisiblebydi[[vi]]sibleby:"4" %} <&lt;/tr><&gt;&lt;tr> &gt;
{% endif %}
{% endfor %}
<&lt;/tr>&gt; <&lt;/table>&gt;
=====結果=====
[[File:0382_django_template_tag_div01.jpg]]
==Forms==

案内メニュー