内容回顾
django引用静态文件的话需要在setting是里面设置
STATIC_URL = '/static/'
STATICFILES_DIRS =(
os.path.join(BASE_DIR,'static'),
)
然后再html文件里面引入static中的文件时
<script src="/static/js/jquery-2.2.0.js"></script>
#直接写静态目录就可以
但是有时候如果要修改静态目录,那么但模板文件众多时,就比较麻烦了。
所以可以直接在html文件中应用STATIC_URL 这个变量
首先需要在settings里面的TEMPLATES加上django.core.context_processors.
然后就可以引用了。
{#<h1>{{ STATIC_URL }}</h1>#}
或者加载staticfiles ,然后就可以使用了
{% load staticfiles %}
{#<h2>{% static "js/jquery-1.8.2.min.js" %}</h2>#}
django From 补充
如果一个form类里面放一个静态字段,那么只会在程序第一次运行的时候执行。
因为之后对象实例话只执行构造函数。不会重新读form类。
所以要把读取那些字段的方法也要放到init中去。
init 要执行父类方法,要用super。
如下
class login_form(forms.Form):
username = forms.CharField(required=True)
password = forms.CharField(widget=forms.PasswordInput())
f = open("data")
data = f.read()
user_type_list = json.loads(data)
f.close()
user_type = forms.IntegerField(widget=forms.Select(choices=user_type_list))
def __init__(self, *args, **kwargs):
super(login_form, self).__init__(*args, **kwargs)
f = open("data")
data = f.read()
user_type_list = json.loads(data)
f.close()
self.fields["user_type"].widget.choices= user_type_list
django model补充
上传文件的时候
post方式 。
注意enctype =
request.FILES 用来获取文件
input_files = request.FILES
file_obj = input_files.get("f1") #获取这个name等于f1的文件
print file_obj.name 输出文件名字
print file_obj.size 输出文件的大小
f = open(file_obj.name,'wb')
for i in file_obj.chunks(): 从chunks里面获取,然后写入
f.write(i)
f.close()
return render(reque
更改表结构时,提示报错,因为django不知道如何对之前的数据进行更改
所以,可以设置新加的数据null=True 或者default=”defalut_value”
url 和模板补充
在urls.py文件里面写一条路由,添加name属性。
url(r'^login/$',views.acc_login,name="login"),
这样在模板文件中就可以引用name属性了。比如在一个form表单里面
action="{% url 'login' %}"
或者
url(r'^article/(\d+)/$',views.article_detail,name="article_detail"),
<a href="{% url 'article_detail' new_article_obj.id %}">
还有就是auth模块,认证的时候。
model引用的是User表