Django
创建一个Django项目,url的理解
#进入到指定要存放项目的目录,创建 HelloWorld 项目
django-admin startproject HelloWorld
#进入HelloWorld 创建 hello 应用
python manage.py startapp hello
#先实现一个最基本的视图与url配置
#hello/views.py
from django.http import HTTPResponse
#----第一步----
def index(request):
return HttpResponse('你好骚啊')
#HeloWorld/urls.py
from hello.views import index # 导入视图函数
#----第二步----
urlpatterns = [
url(r'^index/',index)#先去匹配index(可以随意设置)前缀,访问到views里的index函数
]
#访问http:127.0.0.1:8000/index/ 会显示字符串
#双层路由的实现过程
#1.在hello/下新建urls.py
from django.conf.urls import url
from hello.views import index
#----第一步----
urlpatterns = [url(r'^index/',index)]
#2.更改HelloWorld/urls.py
from django.conf.urls import url, include
#----第二步----需要匹配到另外的路由时要用include----
urlpatterns = [url(r'^hello/',include('hello.urls'))]
#3.在HeloWorld/settings.py下添加
INSTALLED_APPS =['hello']
#访问http:127.0.0.1:8000/hello/index/ 会显示字符串
练习:新建一个应用showtime,每次刷新页面显示不同的时间。
#1.python manage.py startapp showtime
#写showtime/views.py
from django.http import HttpResponse
from datetime import datetime
#----第一步----
def now(request):
return HttpResponse('现在的时间是:%s'% datetime.now())
#在showtime下面新建一个urls.py
from django.conf.urls import url
from showtime.views import now#在这里
#----第二步----
urlpatterns = [url(r'^time/',now)]
#----第三步----
#在HeloWorld/settings.py下添加
INSTALLED_APPS =['showtime']
#在HeloWorld/urls.py中添加
url(r'^showtime/',include('showtime.urls'))
#访问127.0.0.1:8000/showtime/time/ 显示时间
基本模板
练习:在上一个练习中,使用template显示页面内容。
在上面基础上更改
1.在showtime文件夹中新建一个文件夹templates
2.再在里面新建一个showtime文件夹(用来区分,以免重名出现冲突)
3.在里面新建一个html文件now.html
#----第一步----
#更改showtime/views.py
from django.shortcuts import render
def now(request):
return render(request,'showtime/now.html',{'now':datetime.now()})#render参数(request,'模板的名称',时间参数#是一个字典)
#----第二步----
#now.html
现在的时间是:{{now}}#{{}}可以取到变量的值。now是views.py里面的键
基本模型
#hello/models.py
from django.db import models
#----第一步----创建模型----
#类会对应数据库中的表
#类的对象会对应数据库中的一条数据
#类的属性(如name)对应数据库中的字段
class Grade(models.Model):
#注意:
#一般类以大写字母开头,模型类均继承自 models.Model
name = models.CharField(max_length=20)
#字符串, 需要加最大长度
date = models.DateField()
#日期
girlNum = models.IntegerField()
#整数
boyNum = models.PositiveIntegerField()
#正整数
is_delete = models.BooleanField()
#布尔
默认会生成一个id主键 属性是(整数 自增长)
写完之后要做数据迁移,就会把类映射到数据库中
#----第二步----上传到数据库----
python manage.py makemigrations#会生成中间文件
python manage.py migrate#执行迁移,把上面生成的文件写入数据库
刷新数据库会看到有一个hello_grade表 hello是app的名字,表示在hello下面创建的grade表
#----第三步----把数据显示到模板----
#hello/views.py
from django.shortcuts import render
from .models import Grade
def index(request):
#取到所有数据
grades = Grade.objects.all()
#数据库操作参考:http://www.runoob.com/django/django-model.html
#通过render把所有班级渲染到模板上
return render(request, 'hello/list.html' ,{'grades':grades})#通过字典传参,模板可通过key值取得数据,key名可以改
#list.html
<h3>班级列表<h3>
<ul>
{%for grade in grades%} #循环取出数据,后面的grades对应上面的key,上面key改了这里也要改。
<li>
班级名称:{{ grade.name }} <br>
#这里的grade就是上面循环出来的grade
成立日期:{{ grade.date }} <br>
女生数量:{{ grade.girlNum }} <br>
男生数量:{{ grade.boyNum }} <br>
</li>
{%endfor%}
</ul>
#----第四步----
#建好模型后要在同一个APP下面注册一下
#hello/admin.py
from django.contrib import admin
from hello.models import Grade
admin.site.register(Grade)
from django.http import HttpResponse
#数据库操作
from wtf.models import ZQURedio
def testdb(request):
test1 = ZQURedio(name='runoob',date='2018-09-06',girlNum='1', boyNum='3',is_delete='False')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")
服务器的启动
python manage.py runserver [ip:port]
admin后台管理:
创建超级用户:python manage.py createsuperuser
访问admin后台:http://127.0.0.1:8000/admin/
网友评论