Django学习之 - 基础部分

学习记录参考:
讲师博客:http://www.cnblogs.com/wupeiqi/articles/5433893.html
老男孩博客:http://oldboy.blog.51cto.com/
运维平台参考:http://oldboy.blog.51cto.com/2561410/1123127

WEB框架简写与解释
解释:Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
  MVC框架 == Model    View      Controller
        数据库    模板文件    业务处理
  MTV框架 == Model    Template     View
        数据库    模板文件    业务处理
  Django使用的就是MTV框架。

Django
安装:pip3 install django

一个项目的创建和编写步骤如下:
1:创建项目:django-admin startproject mysite
  mysite 创建的默认目录和文件
    - mysite # 对整个程序进行配置
    - init
    - settings    # 配置文件
    - url    # URL对应关系
    - wsgi    # 遵循WSGI规范,uwsgi + nginx 可在线上运行
    - manage.py   # 管理django程序
    - python manage.py
    - python manage.py startapp xx    # 创建一个app程序,注意每个项目可以单独创建一个APP(资产,配管,私有云等)
    - python manage.py makemigrations    # 生成数据库
    - python manage.py migrate # 生成数据库
  启动项目:python manage.py runserver 127.0.0.1:8001
也可以直接通过pycharm创建django站点和app,并且可以直接启动。

2:APP
当创建完项目管理平台后,可以在里面创建项目APP,如:
  python manage.py startapp cmdb
  python manage.py startapp openstack
APP创建完成后,需要将APP的名称添加到settings中的INSTALLED_APPS内。

APP 内包含:
  migrations:记录数据库操作和修改表结构的记录
        这里注意:在python3中从文件夹内倒入模块不需要__init__.py,在python2中需要。
  admin # Django为我们提供的后台管理
  apps # 配置当前APP
  models # ROM,写指定的类,通过命令可以创建数据库结构
  test # 单元测试
  views # 业务逻辑代码

3:静态文件和模板文件的配置
模板文件:
1:在项目内创建templates文件夹
2:将html页面文件放到此文件夹内
3:修改settings中在TEMPLATES修改:‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)],
4:views中的业务代码就可以直接调用html页面
如:return render(request,‘login.html‘)
静态文件:
1:在项目内创建static文件夹
2:将css,js文件放置到此文件夹内
3:修改settings最后增加
  STATICFILES_DIRS = (
    os.path.join(BASE_DIR,‘static‘), #注意要加逗号
  )
4:静态文件在html中的引入:
  <link rel="stylesheet" href="/static/commons.css" />
  <script src="/static/jquery-1.12.4.min.js"></script>
注意:静态文件夹要用:static
4:注释CSRF,这项在初期配置使用可以先关闭,这个功能是方式XSS跨站脚本功能的。
5:定义路由规则
  url.py
    ‘login‘ --> 函数名
6:定义视图函数
  app下views.py
  def func(request):
    # request.method (GET / POST)
    # request.POST.get(‘‘,None)
    # request.GET.get(‘‘,None) GET是根据URL取值,获取请求发来的URL数据
    # return HttpResponse(‘字符串‘)
    # return render(request,‘html模板文件路径‘)
    # return redirect(‘只能填写URL‘) 这里只能是url,因为是返回给客户,客户要重新访问
7:模板渲染
比如后台函数返回:return render(request,‘home.html‘,{‘userinfo‘:user_info})
前台页面通过变量渲染:<div>{{ userinfo }}</d iv>

特殊的模板语言
  -- {{ 变量名 }}
  -- {% for item in list %} {{ value }} {% endfor %} 可以进行if嵌套
  ###索引###
  如:return render(request,‘home.html‘,{‘current_user‘:‘jack‘,
                    ‘user_list‘:[‘jk1‘,‘jk2‘],
                    ‘user_dict‘:{‘k1‘:‘v1‘,‘k2‘:‘v2‘}})
  以上返回值在html中取值方法;
    <div>{{ current_user }}
    <a> {{ user_list.0 }}</a> 值为列表的获取
    <a> {{ user_list.1 }}</a>
    <a> {{ user_dict.k1 }}</a> 值为字典的获取
    <a> {{ user_dict.k2 }}</a>
  ####条件##### 支持嵌套
  如:return render(request,‘home.html‘,{‘current_user‘:‘jack‘,
                    ‘user_list‘:[‘jk1‘,‘jk2‘],
                    ‘age‘: 18,
                    ‘user_dict‘:{‘k1‘:‘v1‘,‘k2‘:‘v2‘}})
  条件判断方法:
  {% if age %}
    <a>为真</a>
    {% if age > 16 %}
      <a>...</a>
    {% endif %}
  {% else %}
    <a>为假</a>
  {% endif%}

实例1:用户登录认证并重定向到新页面见:login,home
url(r‘^login‘,views.login),
url(r‘^home‘,views.home),

view代码如下:

def login(request):
    # 获取用户提交的方法
    # request 包含了客户端用户发来的所有信息
    error_msg = ‘‘
    if request.method == ‘POST‘:
        # 获取用户通过POST提交过来的数据
        # request.POST 方法封装了所有用户发过来的请求
        # uname = request.POST[‘username‘]
        # upwd = request.POST[‘pwd‘]
        # 最好用get方法获取数据,即使没有也不会报错
        uname = request.POST.get(‘username‘,None)
        upwd = request.POST.get(‘pwd‘,None)
        if uname == ‘root‘ and upwd == ‘root‘:
            # return HttpResponse(‘登录成功‘)
            return redirect(‘/home‘)
        elif not uname or not upwd:
            error_msg = ‘用户名密码不允许为空‘
        else:
            # 用户名密码不匹配
            error_msg = ‘用户名或密码错误‘
    return render(request,‘login.html‘,{‘error_msg‘:error_msg})

时间: 2024-11-06 06:42:22

Django学习之 - 基础部分的相关文章

Django学习之 - 基础模板语言

模板语言循环 1:如果模板语言遇到列表,直接进行循环取值即可. 2:如果模板语言遇到字典进行循环有以下3种: - for item in dict.keys 只循环获取字典key - for item in dict.value 只循环获取字典value - for k,v in dict.items 循环获取字典的key,value全部.实例url:fordict # 字典for循环的取值方法 1 userlist = { 2 '1': {'name': 'jack', 'age': 36},

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Django学习笔记汇总

1. 学习历程 从学了Python以来,我都一直想着用它来做点什么.从开始用python来写简单的工具脚本,然后再是网络信息抓取程序. 听说可以用Python来做网站,所以我了解了一下web.py与Django.第一次接触Django,由于没有网络方面的基础,所以没弄两下就放弃了. 后来,我研究了一下Python自来的SimpleHTTPServer,然后读懂了CGIHTTPServer,才对Web的实质有了了解. 在这个基础上,我再次重拾Django.这次,终于学会了. 原来它是那么的美妙!

今天主要推荐一下django学习的网址!

前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了,那么你对django就算入门了. 一张流程图告诉你,django的处理流程: 正文:推荐django学习网址: django1.82官方学习网址:http://python.usyiyi.cn/django/index.html(大家在学习的过程中可以参与到django1.8汉化,希望早日djan

Django学习笔记(二)—— 模板

疯狂的暑假学习之 Django学习笔记(二)-- 模板 参考: <The Django Book> 第四章 一.模板基础知识 1.模板是如何工作的 用 python manage.py shell 启动交互界面(因为manage.py 保存了Django的配置,如果直接python启动交互界面运行下面代码会出错) 输入下面代码 >>> from django import template >>> t = template.Template('My name

Python框架之Django学习笔记(十七)

Django框架之表单(续二) PS:本博客欢迎转发,但请注明博客地址及作者~ 博客地址:http://www.cnblogs.com/voidy/ <.)#)))≦ 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部分了,不过也够我们平时搭个简易的网站或者个人博客什么的.希望通过这一系列的博文,让大家也从中体会到Django框架的魅力所在,如果很不幸,你没有体会到,只能说明我水

Python框架之Django学习笔记(十)

又是一周周末,如约学习Django框架.在上一次,介绍了MVC开发模式以及Django自己的MVT开发模式,此次,就从数据处理层Model谈起. 数据库配置 首先,我们需要做些初始配置:我们需要告诉Django使用什么数据库以及如何连接数据库.假定你已经完成了数据库服务器的安装和激活,并且已经在其中创建了数据库(例如,用 CREATE DATABASE语句). 如果你使用SQLite,不需要这步安装,因为SQLite使用文件系统上的独立文件来存储数据.和前面章节提到的 TEMPLATE_DIRS

django学习之Model(二)

继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.models import ZipCode class Restaurant(models.Model): # ... zip_code = models.ForeignKey(ZipCode) 2-field名字的约束 1)-不能是Python预留字 2)-不能有连续的2个下划线,例如foo__ba

07: Django 学习补充

目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:ModelForm 数据验证 & 生成html & 数据库操作 06: Django Admin 07: Django 学习补充 1.1 待补充