model query
根据ID查询的方法 Model.objects.get(pk=id)
查找所有:Model.objects.all()
带有条件的查询:
filter
exclude
排序查询:
order_by()
分页
[:]
html django标签
{% csrf_token %}
{% url %}
{% for %} {% endfor %}
{% if %} {% else %} {% endif %}
模型表单
Django 提供一个辅助类来让你可以从Django 的模型创建表单。
modelForm
form --> Model
继承ModelForm,编写其中的内部类
class Meta:
model = Student
fields 包含字段
exlude 排除字段
多选:MultipleChoiceField
class StudentForm(forms.ModelForm):
SEX_CHOICE = (
('男', '男'),
('女', '女'),
)
LIKE_CHOICE = (
('体育', '体育'),
('美术', '美术'),
('音乐', '音乐')
)
name = forms.CharField(label='姓名')
sex = forms.ChoiceField(label='性别', choices=SEX_CHOICE, widget=forms.RadioSelect)
likes = forms.MultipleChoiceField(label='爱好', choices=LIKE_CHOICE, widget=forms.CheckboxSelectMultiple)
class Meta:
model = Student
fields ='__all__'
这样我们就不用自己在html中画表单了,只要把表单对象传过去就可以在html中使用,同时还提供了许多便利的方法操作相关联的实力类。
比如is_valid()方法就是验证表单是否合法,.save()方法可以直接把数据保存到数据库。
文件上传
form.FileField() 用于手动编写
model.FileFileld(upload_to ='' 用在自动保存上传文件)
首先进行上传路径的设置
settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload')
MEDIA_URL = '/upload/'
配置urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #<--
我们在创建表单对象的时候代码从#1变成#2
form = StudentForm(request.POST)#1
form = StudentForm(request.POST, request.FILES)#2
表单设置
<form action="addStudent2" method="post" ENCTYPE="multipart/form-data">
models设置
imgPath = models.FileField(verbose_name='头像', null=True, upload_to='student')
这样我们就可以进行文件上传,表单模型的.save()可以直接进行保存,把文件保存到指定路径,把地址保存到数据库
if form.is_valid():
form.save()
print(stu.imgPath)
配置静态文件
我们在web开发中要用到CSS等文件,在Django中要想调用这些文件,就需要配置一个静态文件夹。
首先是settings.py:
STATICFILE_DIR=(
os.path.join(BASE_DIR, 'static')
)
STATIC_URL = '/static/'
然后是urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATICFILE_DIR)
配置静态文件和文件上传路径都需要导入两个模块。
from django.conf import settings
from django.conf.urls.static import static
这样我们就可以使用自己配置路径下的文件了。
配置其他数据库
在settings.py中
DATABASES = {
'default': {
'ENGINE': '需要的驱动',
'NAME': '数据库名',
'HOST': '地址',
'USER': '用户名',
'PASSWORD': '密码',
'PORT': '端口'
}
}
python自带了几个常用的数据库驱动,比如Mysql,MySQLdb是自带的一个本地驱动,但是MySQLdb暂不支持Python3之后的版本,所以我们需要其他的驱动,这里选择mysqlclient这个驱动,django为这个驱动提供了适配器,所以只需要安装即可使用。
使用PIP安装
pip install mysqlclient
安装后配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'shopsys_db',
'HOST': 'localhost',
'USER': 'root',
'PASSWORD': 'root',
'PORT': '3306'
}
}
然后我们就可以操作数据库了。