Django的入门(一)配置路由、html加载数据库
配置完Django后运行服务器,然后开始创建自己的视图并设置url链接
在views.py写内容:
视图类来区分get和post请求:
views.py文件写类
from django.views import View
# 继承于django.view:View
class UserInfo(View):
# 返回所有的get请求,这里返回用户信息
def get(self, request):
return HttpResponse('ok')
def post(self):
pass
urls.py写跳转逻辑:
urlpatterns = [
url(r'^userinfo/', UserInfo.as_view()),
]
在url.py配置链接,配置路由方法一
这种是简单直接的导入:
配置路由方法二(分模块,更常用的方法)
路由可能会过多,所以就有第二种方法,按模块配置路由即分模块再集中.
- 在项目所在的同名文件夹的urls里面配置include(将各个模块的URL加载)
- 在各个模块的URL里面配置URL-VIEWS
然后在views.py添加一个函数即页面:
def index(request):
return HttpResponse('第二种方法匹配出的index界面')
然后创建urls.py,写内容:
配置模板文件
接下来是返回网页内容:
- 先创建一个文件夹templates
- 配置文件夹的查找路径,在setting.py里找到’DIRS’:[]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
然后进行拼接,可以自己print看看是否拼接成功
'DIRS': [os.path.join(BASE_DIR, 'templates')],
配置好之后,新建一个html文件,随便写点什么,然后在user/views.py进行配置:
html加载数据库的内容
同上文操作,在urls.py添加
urlpatterns = [
url(r'^index/', index),
url(r'^userinfo/', userinfo),
url(r'^show_userinfos/', show_userinfos)
]
在views.py添加:
def show_userinfos(request):
# 查找所有的用户信息
from user.models import UserInfo
try:
# 取出所有的数据
# data = UserInfo.objects.all()
print('这里打印的是所有的用户信息')
# data = UserInfo.objects.get(id=1) # 一条数据
# data = UserInfo.objects.count() # 计数
# 查找id不等于1的userinfo
# __gt代表大于 __lt代表小于 __lte小于等于
# 这些都返回列表对象
# data = UserInfo.objects.filter(id__gt=1)
# 查找带 小 的
# data = UserInfo.objects.filter(name__contains='小')
# 查找姓王的人
data = UserInfo.objects.filter(name__startswith='王')
except:
data = '不存在'
finally:
pass
print(data)
# context是构造上下文,网页需要的数据,必须是字典结构
context = {'datas': data}
return render(request, 'showuserinfos.html', context)
在文件夹templates创建一个新的网页showuserinfo.html:
里面有新的语言来提取数据库内容,要另外学习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>userinfos</h1>
<ul>
{{ datas }}
{# {% for obj in datas %}#}
{# <li>{{ obj.name }}</li>#}
{# <li>{{ obj.phone }}</li>#}
{# <li>{{ obj.addkey }}</li>#}
{# {% endfor %}#}
</ul>
</body>
</html>
manage.py shell测试
进入环境以及文件夹之后,可以shell调试,记住写完之后要save():
>>> from user.models import *
>>> add = AddressInfo()
>>> add.add = '广州'
>>> add.save()
>>> user=UserInfo()
>>> user.name='白小姐'
>>> user.phone=18814882311
>>> user.addkey=add
>>> user.save()
>>>
>>> UserInfo.objects.all()
>>> add.userinfo_set.all()
>>> from user.models import AddressInfo
>>> AddressInfo.objects.create(add='深圳')
<AddressInfo: 深圳>
>>> AddressInfo.objects.all()
<QuerySet [<AddressInfo: 苏州>, <AddressInfo: 杭州>, <AddressInfo: 上海>, <AddressInfo: 广州>, <AddressInfo: 深圳>]>
这里外键的添加方式是一个实例对象,即直接对象赋值给外键,
UserInfo.objects.all() // 这个是查询所有
add.userinfo_set.all() // 根据对象的外键查询
AddressInfo.objects.create(add=‘深圳’) // 添加表属性