django项目初步设置与部署
利用django-admin startproject website进行网站项目创建。
进入website文件夹,在这里打开命令行。在命令行上输入manage.py startapp blog,这条命令说明我们需要建设一个真正的网站,该网站的名字为blog。
到此为止其实一个网站的基础已经搭建起来。我们可以看到里面的文件分别为:init.py、settings.py、urls.py、wsgi.py。
下面我们会对其一步步的深入:
1.对setting文件进行修改
-
修改地区语种
增加blog网站
2.我们进入urls.py进行修改:
我们再次增加一条代码。
url(r'^blog/index/$','blog.views.index'),
(这是一个正则表达式,是为了我们在浏览器中输入地址进行匹配的。具体的正则表达式抽时间再进行整理)
3.已经定义好了urls.py后,我们从刚的式子可以看出我们用一个正则表达式匹配了浏览器输入的地址,后接受这个请求需要返回'blog.views.index'这个视图函数。所以我们在views.py中进行定义一个index。
修改过过程为:
# Create your views here.
from django.http import HttpResponse
from django.template import loader,Context
#creat the function index:
def index(request):
t = loader.get_template("index.html")//接受请求后返回index.html
c = Context({})//在这里进行设置器html页面规定的模板变量
return HttpResponse(t.render(c))//通过渲染后进行返回
4.创建了模板模式,blog/templates/index.html
我们在blog文件下创建templates文件夹,这个文件夹保存需要返回的模板网页。我们创建相应的index.html。
我们输入一句测试语句:
hello {{name}}!
在这里我们可以看到{{name}},在两个花括号里的就是一个模板变量,下面我们会详细讲解
在views.py我们进行模板变量的赋值:
def index(request):
t = loader.get_template("index.html")
name ='world'
c = Context({"name":name})
return HttpResponse(t.render(c))
5.最后一步我们在命令行中输入 manage.py runserver,这行命令启动django内置的服务器,我们输入相应的网址可以进行对我们建设的网站进行访问。访问结果如下:
模板变量的问题
在创建类当中的构造函数当中我们必须记住__ init
是两条下划线。
模板变量的使用
++首先在html的页面中去规定模板变量{{}}在内写上变量的名称.设定的名称在django文件中进行再次的设置。++
相应的其实在构造器中使用也是一个字典。使用字典进行映射。
在模板中也可以进行判断使用{% %}进行判断。同时必须要有开始和结尾。
这是两个模板标签
开始是{% if %}
结束时{% endif %}
开始是{% for %}
结束时{% endfor %}
注意俩个%要顶到头同时不要混淆{}和<>
{% empty %}代表其为空在for循环中嵌套使用。
forloop.counter :输出的最后一次
forloop.revcounter:还剩下几次
forloop.first: 第一次循环
forloop.lasy: 最后一次循环
django的过滤器
过滤器与管道的区别
其实将其与linux下的管道相比而言,两者十分相似。前者的输出变为后者的输入
capfirst为变大第一个字母
today|date:"Y-m-d"这这是一个管道的输出
如何自定义过滤器
- 现在文件家里建立templatags的文件夹
- 在建立起init.py
- 在建立相应的过滤器来进行
from django import template
register = template.Library()//引入过滤器的图书馆
def percent (value):
return value+"%"
register.filter(percent)//注册你自己定义的过滤器
输入值如何得到
id = request.GET.get("id")
第一种船只方式
/?id=11&name=asda
第二种传值方法
/122/asd
都在url.py进行对url的构造。
他是一种使用正则表达式的一种使用。
第一种是url(r" url(r'^foo/(\d{4})/(\w+)/$','foo'),")//前面对应的是传入的参数。后面呢是传入的位置
在view.py函数当中可以接受的参数是前面传入的参数
错误
url(r'^bar/(?P\d{4})/(?P\w+)/$','bar'),
在这里是将其进行一个分组,id的组长限制为4个数字,name限制为多个字符。并且对其进行字符长度的限制和分组的命名。
与数据库的交互
django的模板
在blog下的model.py文件进行修改
输入设置需要创建的数据库文件。
from django.db import models
Create your models here.
class Student(models.Model):
name = models.CharField(max_length = 50)
age = models.IntegerField()
同时在命令行下进行启动:
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3960436-d90ff393c159a304.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3960436-99fa710bcc46f38b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3960436-f1edccdc76928b68.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3960436-b54e2c702513db2b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3960436-aeb96e74c7b14c39.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)