• django笔记一


    django笔记一

    安装django

    解压原码包,之后执行
    python setup.py install
    2)首次运行django
    创建项目:
    django-admin.py startproject mysite
    运行测试:
    python manage.py runserver 0.0.0.0:8000 &
    可以看到:

    添加应用

    django-admin.py startapp blog
    1)vim ../mysite/settings.py
    INSTALLED_APPS = (
        'blog',
    )
    

    2)修改url.

    import blog.views    ##记得导入视图
    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'.*',blog.views.index),
    ]
    

    3)创建视图

    [root@server0 blog]# cat views.py
    from django.shortcuts import render
    from django.http import HttpResponse
    # Create your views here.
    def index(req):
    	return HttpResponse("hello world")
    

    刷新网页可以查看到

    解析:1)创建要发送的网页时涉及大量的细节,设置MIME类型,状态码。Django的HttpResponse负责这些工作,将所有变量存储在一个地方,方便修改;
    HttpResponse是一个函数,Django可调用它来显示网页,这个函数接受一个表示网页的请求的request对象,并返回一个response对象。
    3)Url将一切关联起来,可视为 交警,确保每个请求都前往正确的地方。

    使用模板

    1)mkdir templates
    2)Vim templates/index,html
     [root@server0 templates]# cat index.html 
    <html>
    <head>
    <title>hello</title>
    </head>
    <body>
    <h1>hello world</h1>
    </body>
    </html>
    

    3)编写视图

    root@server0 blog]# cat views.py
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import loader,Context
    # Create your views here.
    def index(req):
    	t=loader.get_template('index.html')
    	c=Context({})
    	return HttpResponse(t.render(c))
    
    

    模板解析:
    1)t=loader.get_template('index.html')加载模板文件导入过来
    2)Context将变量传递给模板的方式,
    3)完成以后,调用模板的render()方法并将context上下文传递给它,再使用render()返回的结果创建并返回一个HttpResponse对象。
    使用模板的另一种方法:

    [root@server0 blog]# cat views.py
    from django.shortcuts import render_to_response
    def index(req):
    	return render_to_response('index.html',{})
    

    利用render_to_response方法可以直接将模板加载进来。记得导入from django.shortcuts import render_to_respons。
    如何动态将视图中的数据传输过去
    模板:

    [root@server0 blog]# cat templates/index.html 
    <html>
    <head>
    <title>{{title}}</title>
    </head>
    <body>
    <h1>hello world {{user}}</h1>
    </body>
    </html>
    

    视图函数:

    [root@server0 blog]# cat views.py
    from django.shortcuts import render_to_response
    # Create your views here.
    def index(req):
    		return render_to_response('index.html',{'title':'mimi','user':'kk'})
    

    如果user是一个字典:

    [root@server0 blog]# cat views.py
    from django.shortcuts import render_to_response
    # Create your views here.
    def index(req):
    	user={'name':'aa','age':'18','sex':'male'}
    	return render_to_response('index.html',{'title':'mimi','user':user})
    

    如果只显示性别:

    [root@server0 blog]# cat templates/index.html 
    <html>
    <head>
    <title>{{title}}</title>
    </head>
    <body>
    <h1>hello world {{user.sex}}</h1>
    </body>
    </html>
    

    2)使用类:

    [root@server0 blog]# cat views.py
    from django.shortcuts import render_to_response
    # Create your views here.
    class Person():
    	def __init__(self,name,age):
    		self.name=name
    		self.age=age
    	def say(self):
    		return "i am "+self.name
    def index(req):
    	mimi=Person('mimi','9')
    	kk=mimi.say()
    	user={'name':'cc','age':'2','sex':'max'}
    	book_list=['python','shell','java']	
    	return render_to_response('index.html',{'title':'oo','book_list':book_list,'mimi':kk})
    

    在模板中使用for语句

    [root@server0 blog]# cat views.py
    from django.shortcuts import render_to_response
    # Create your views here.
    class Person():
    	def __init__(self,name,age):
    		self.name=name
    		self.age=age
    	def say(self):
    		return "i am "+self.name
    def index(req):
    	mimi=Person('mimi','9')
    	kk=mimi.say()
    	user={'name':'cc','age':'2','sex':'max'}
    	book_list=['python','shell','java']	
    	return render_to_response('index.html',{'title':'oo','book_list':book_list,'mimi':kk})
    

    模板:

    [root@server0 blog]# cat templates/index.html 
    <html>
    <head>
    <title>{{title}}</title>
    </head>
    <body>
    {% for book in book_list %}
    	<h1>{{book}}</h1>
    {% endfor %}
    <h3>{{mimi}}</h3>
    </body>
    </html>
    

    Django模板就是HTML页面,在模板中将python内容放在{% 和 %} 和{{和}}之间,其中位与{%和%}之间的是程序代码,而位于{{}}之间的是变量,变量来自渲染模块是传递给他的上下文,
    标签:{% for %} 结束循环时用{% endfor %}
    {% if %} {% else %} {% endif %}

    渲染模板的另一种方法:

    [root@server0 blog]# cat views.py
    from django.template import loader,Context
    from django.http import HttpResponse
    from django.shortcuts import render_to_response
    # Create your views here.
    class Person():
    	def __init__(self,name,age):
    		self.name=name
    		self.age=age
    	def say(self):
    		return "i am "+self.name
    def index(req):
    	mimi=Person('mimi','9')
    	kk=mimi.say()
    	user={'name':'cc','age':'2','sex':'max'}
    	book_list=['python','shell','java']	
    	t=loader.get_template('index.html')
    	c=Context({'title':'hello','book_list':book_list,'mimi':kk})
    	return HttpResponse(t.render(c))
    
  • 相关阅读:
    springBoot、SpringCloud 常用注解
    HashMap
    数据库连接池原理
    三次握手《《=====》》四次握手
    服务器
    二维码
    Nginx
    日志记录
    数据库事务/索引/存储引擎/锁
    Java接口
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5700862.html
Copyright © 2020-2023  润新知