注:以下内容是我的学习笔记,不当做任何资料供大家参考,纯粹的笔记。
djgango 操作数据库步骤
1、cmd进入项目路径,输入pip install mysqlclient 安装mysql驱动
2、在settings中配置mysql连接:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘blog’,
‘USER’:’root’,
‘PASSWORD’:’123456’,
‘HOST’:’localhost’,
‘PORT’:’3306’,
}
}
3、在django的models中创建model类:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=60,default='title')
content = models.TextField(null=True)
4、使用model类创建数据表(数据迁移):
python manage.py migrate #创建表结构,非model类的表
python manage.py makemigrations TestModel #做数据迁移的准备
python manage.py migrate # 执行迁移,创建medel表结构
5、操作数据库:向数据库插入数据:
from django.shortcuts import render
from django.http import HttpResponse
from myblog.models import Article
# Create your views here.
def index(request):
article = Article(title='标题',content='内容!')
article.save()
return render(request,'index.html',{'article':article})
二:配置admin
1、cmd进入django项目路径,输入python manage.py createsuperuser
输入名字,邮件,密码(不可太简单) admin账号密码创建成功
2、通过localhost:8000/admin进入后台管理中,此时管理后台页面是英文的,在settings.py中的LANGUAGE_CODE 改为
值为’zh_Hans’。
3、将我们定义的Model类的管理也添加到后台中,在admin.py中使用:
admin.site.register(Model类名)
4、此时发现model类的计入显示的是:”类名 Object”,可通过修改model类的str方法修改其显示内容,如:
def __str__(self):
return self.title
这样后台显示的就是model类的title属性也不是类名 Object了
三、URL配置
1、在项目根路径中的urls.py中的include中添加命名空间,如创建一个url命名空间如为’myblog’:
url(r'^myblog/',include('myblog.urls',namespace='myblog')),
2、在app的url下给url取名,如取名为’myblog_detail’:
url(r'^article/(?P<article_id>[0-9]+)/$',views.article_detail,name='myblog_detail'),
3、在界面中中给超链接设url访问路径:
<a href="{%url 'myblog:myblog_detail' arti.id%}">{{arti.title}}</a>
四、Admin进一步学习
目的:在admin后台管理界面显示更多的类属性
在admin.py中定义:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title','content','pub_time')
其中list_display就是设置要显示的属性,然后再注册这个类:
注册方式:在admin.py中使用:admin.site.register(Article,ArticleAdmin)
,把类名添加到注册语句的括号里
使用过滤器:
如在类中定义:list_filter = (‘pub_time’,),对属性pub_time进行过滤
分页:
list_per_page = 3;
属性分组:
fieldsets = [
('base',{'fields':['title']}),
('more',{'fields':['content','pub_time']})
];
五、Django Shell
1、cmd进入项目文件路径
2、进入shell命令窗口:python manage.py shell
在这里么可以使用一些函数,可以看到函数的返回值是什么,如:
from myblog.models import Article
六、Django获取对象的方法:
Person.objects.all()
Person.objects.all()[:10] 切片操作,获取10个人,不支持负索引,切片可以节约内存
Person.objects.get(name=name)
#get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter
Person.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岁的
八、DTL简单使用:
{% for c in list%}
{% if forloop.counter|divisibleby:"2" %}
<li style="color: chartreuse">{{ c.name }}</li>
{% else %}
<li style="color: deepskyblue">{{ c.name }}</li>
{% endif %}
{%empty%}{% comment %}list为空的时候执行这个{% endcomment %}
啥也没有
{% endfor%}
九、静态文件
使用静态文件:
settings.py中设置:
STATIC_URL = '/static/'
STATICFILES_DIRS =[
os.path.join(os.path.dirname(__file__),'static'),
]
使用static 关键词时需要使用下面语句
{% load static from staticfiles %}