返回顶部
首页 > 资讯 > 后端开发 > Python >django基础(一)
  • 394
分享到

django基础(一)

基础django 2023-01-31 08:01:59 394人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

项目的创建和启动 (venv3) [vagrant@localhost ~]$ cd /vagrant/ (venv3) [vagrant@localhost vagrant]$ Django-admin startproject de

项目的创建和启动

(venv3) [vagrant@localhost ~]$ cd /vagrant/
(venv3) [vagrant@localhost vagrant]$ Django-admin startproject devops
(venv3) [vagrant@localhost vagrant]$ tree devops/
devops/      #项目容器
├── devops     #是实际的python项目包
│ ├── __init__.py
│ ├── settings.py   #配置文件
│ ├── urls.py     #路由文件
│ └── wsgi.py
└── manage.py     #实用的命令行工具
(venv3) [vagrant@localhost vagrant]$ vim devops/devops/settings.py    #数据库配置文件更改
DATABASES = {
   'default': {
       'ENGINE': 'djanGo.db.backends.Mysql',
       'NAME': 'devops',
       'USER': 'root',
       'PASSWord': '123456',
       'HOST': 'localhost',
       'PORT': 3306,
          'OPTioNS':{
           'init_command': 'SET default_storage_engine=INNODB;',
           },
    }
}
  • 服务启动
(venv3) [vagrant@localhost devops]$ Python manage.py runserver 0:8000
  • 新建项目
(venv3) [vagrant@localhost devops]$ python manage.py startapp dashboard     #方法一
(venv3) [vagrant@localhost devops]$ django-admin startapp dashboard1           #方法二

startproject和startapp的区别

一个项目下有多个app(一对多的关系)
  • 配置url
(venv3) [vagrant@localhost devops]$ vim dashboard/urls.py
from django.conf.urls import url
urlpatterns = [
]
  • 注册app
(venv3) [vagrant@localhost devops]$ vim devops/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dashboard'
]

hello world

  • 视图函数
(venv3) [vagrant@localhost devops]$ vim dashboard/views.py
from django.shortcuts import render
from django.Http import HttpResponse
#视图函数
def index(request):
    return HttpResponse("hello world")
  • 配置app url
(venv3) [vagrant@localhost devops]$ vim dashboard/urls.py
from django.conf.urls import url
from .views import index
urlpatterns = [
    url(r'^$',index,name='index')
]
  • 配置project url
(venv3) [vagrant@localhost devops]$ vim devops/urls.py
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^dashboard/',include("dashboard.urls"))
]
  • 启动项目
(venv3) [vagrant@localhost devops]$ python3 manage.py runserver 0:8000

HttpRequest对象

  • 是在django.http这个模块中
  • 是有django创建
  • 官方文档docs

常用的属性:

request.body -----b''
request.scheme -----http
request.path ---- /dashboard/
request.method --- GET
request.GET
request.POST
request.META

HttpResponse对象

  • HttpResponse:返回字符串
  • JSONResponse:返回字典,注意safe=False是针对于列表类型

GET与POST请求

- GET
request.GET
request.GET.get('xx')
request.GET.getlist('oo')
- POST
request.GET
request.GET.get('xx')
request.GET.getlist('oo')

Querydict

In [1]: from django.http import QueryDict                                                                  
In [2]: QueryDict('aa=bb&cc=dd&cc=xxx')                                                                    
Out[2]: <QueryDict: {'aa': ['bb'], 'cc': ['dd', 'xxx']}>
In [3]: q = QueryDict('aa=bb&cc=dd&cc=xxx')                                                         \
In [4]: QueryDict.fromkeys(['a','b','a'],value='val')                                                      
Out[4]: <QueryDict: {'a': ['val', 'val'], 'b': ['val']}>
In [5]: q                                                                                                  
Out[5]: <QueryDict: {'aa': ['bb'], 'cc': ['dd', 'xxx']}>
In [6]: q.dict()                                                                                           
Out[6]: {'aa': 'bb', 'cc': 'xxx'}
In [7]: q.urlencode()                                                                                      
Out[7]: 'aa=bb&cc=dd&cc=xxx'

DELETE&PUT请求

请求返回都在request.body中

  • 视图函数
def index_2(request):
    if request.method == "GET":
        print("request get =",request.GET)
        data = request.GET.copy()
        data['aa'] = 'xxxxxx'
        print("data =",data)
        print("aa =",request.GET.get("aa"))       #取出单个值
        print("cc =",request.GET.getlist("cc"))   #取出多个值
    elif request.method == "POST":
        print("request post =",request.POST)
        print("aa =",request.POST.get("aa"))
        print("cc =",request.POST.getlist("cc"))

    elif request.method == "DELETE":
        print("delete=",QueryDict(request.body))

    elif request.method == "PUT":
        print("put=",QueryDict(request.body))

    return HttpResponse("")
  • 请求方式:
In [1]: import requests                                                                             
In [2]: url = "http://127.0.0.1:8000/dashboard/"    
In [3]: data = {}                                                                                         
In [4]: data['aa'] = 'bb'                                                                              
In [5]: data['cc'] = ['dd','ee']      
In [9]: requests.delete(url,data=data)                                                     Out[9]: <Response [200]>
In [10]: requests.put(url,data=data)                                                         Out[10]: <Response [200]>
用户登录练习
  • 视图函数
def login(request):
    msg = ""
    if request.method == "POST":
        username = request.POST.get("username")
        userpass = request.POST.get("userpass")
        if username == "admin" and userpass == "123456":
            msg = "login success"
        else:
             msg = "login failed"
    else:
         msg = "请求方法不被允许!"
     returnHttpResponse(msg) 
  • post请求方法
In [11]: url = "http://192.168.33.10/login/"                                       
In [12]: data = {}                                                                                       
In [13]: data['username'] = "admin"                                                         
In [14]: data['userpass'] = "123456"   
In [16]: r = requests.post(url,data)  
In [18]: r.content.decode('utf8')  

用户创建

(venv3) [vagrant@localhost devops]$ python3 manage.py shell
(venv3) [vagrant@localhost devops]$ python3 manage.py dbshell
(venv3) [vagrant@localhost devops]$ python3 manage.py showmigrations
(venv3) [vagrant@localhost devops]$ python3 manage.py makemigrations
(venv3) [vagrant@localhost devops]$ python3 manage.py migrate
-----------------------------------创建用户--------------------------------------
(venv3) [vagrant@localhost devops]$ python3 manage.py shell
In [1]: from django.contrib.auth.models import User                                                        
In [2]: User.objects.create_user("wanghui","wanghui@qq.com",'123456')      #创建普通用户
In [3]: User.objects.create_superuser("admin","admin@qq.com",'123456')                  #创建超级管理员

---------修改密码-------------------------------------------------------

In [5]: u = User.objects.get(username="wanghui")                                                           
In [6]: u.set_password('654321')                                                                           
In [7]: u.save()       

---------删除用户----------------------------

用户登录

步骤:
一个视图
GET请求:展示登陆页面
POST请求:执行用户登陆
                   1. 接收用户post过来的用户名密码
                    2. 验证用户名密码
                    3. 返回结果
  • 视图函数
from django.contrib.auth.models import User
from django.contrib.auth import login,authenticate
def LoginView(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        userpass = request.POST.get('userpass')
        # try:
        # User.objects.get(username=username)
        # except User.DoesNotExist:
        # return HttpResponse("用户不存在!")
        user = authenticate(request,username=username,password=userpass)
        if user is not None:
            login(request,user)
            return HttpResponse("用户登录成功")
        else:
            return HttpResponse("用户登录失败")
    return render(request, 'login.html')
  • 模板文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
<div>
    <fORM method="POST">
        <li>
            <span>username</span>
            <input type="text" name="username" id="">
        </li>
        <li>
            <span>password</span>
            <input type="password" name="userpass">
        </li>
        <li>
            <input type="submit">
        </li>
    </form>
</div>
</body>
</html>
  • 路由
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$',views.index,name="index"),
    url(r'^index2/$',views.index_1,name="index_1"),
    url(r'^login/$',views.loginv1,name="login"),
    url(r'^loginv2/$',views.LoginView,name="loginv2"),
]

--结束END--

本文标题: django基础(一)

本文链接: https://lsjlt.com/news/193363.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • django基础(一)
    项目的创建和启动 (venv3) [vagrant@localhost ~]$ cd /vagrant/ (venv3) [vagrant@localhost vagrant]$ django-admin startproject de...
    99+
    2023-01-31
    基础 django
  • day 52 Django基础一之web
      django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单示例 一 w...
    99+
    2023-01-31
    基础 day web
  • Python基础(Django)
    介绍Django之前,先来明确几个基础概念:1、什么是Web框架?    Web框架其实是建立web应用的一种方式,它为应用程序提供一套程序框架,这样开发者可以专注于编写清晰、易维护的代码,而无需从头做起。    他们基本上都以相同的方式工...
    99+
    2023-01-31
    基础 Python Django
  • Python基础(Django三——Model)
    本篇内容接上篇Python基础(Django二)七、Model1、说明:Model是Django为方便程序操作数据库而诞生的,使用的是ORM模式。对象关系映射(Object Relational Mappi...
    99+
    2024-04-02
  • Django基础之(十)DRF
    简介 官方文档 Requirements REST framework requires the following: Python (2.7, 3.4, 3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1) ...
    99+
    2023-01-31
    基础 Django DRF
  • Django学习 第一节 基础环境配置
           Django是一个高效的web开发框架,使用Django可以用最小的代价构建和维护高质量的web应用。通过减少重复的代码,...
    99+
    2024-04-02
  • Python基础教程:一次性搞定 Django Form
    最近在项目上用到了 Django 的自带的 Form 表单,遇到了一些坑,今天给大家出的这篇Python基础教程也是做了一个简单的总结,大家可以对号出坑。Form 基础介绍首先让我们先来了解下 Django 中 Form 表单的基本用法。D...
    99+
    2023-06-02
  • Django框架基础学习
    Django安装python下载地址 http://www.python.org/download/releases/3.3.4/Django的下载地址:https://www.djangoproject....
    99+
    2024-04-02
  • django-模板层基础2
    1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个...
    99+
    2023-01-30
    模板 基础 django
  • 【一文到底】【0基础】【快速上手】Django基本使用
    Django web开发 基础 1. Django的安装 和之前python一样,通过pip来安装即可 pip install django django和其他第三方Python模块一样,会在当前py...
    99+
    2023-08-31
    python django flask orm 后端
  • python框架django基础指南
    Django简介: Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。不过在Django实际使用中,Django更关注的是模型(Model...
    99+
    2022-06-04
    框架 基础 指南
  • Django基础之Model创建表
    一、创建单表models.py#!/usr/bin/env python # -*- coding:utf-8 -*- from __future__&nb...
    99+
    2024-04-02
  • day 71 Django基础六之ORM
        本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁   行级锁     select_for_update(nowa...
    99+
    2023-01-31
    基础 day ORM
  • Mysql基础(一)
    准备工作 开启服务器 ··windows系统:   方法1.搜索服务,找到mysql并开启.   方法2.如果安装的是5.7版本,cmd中输入: net start MySQL57 ··Mac系统:   系统偏好设置开启mys...
    99+
    2014-12-15
    Mysql基础(一)
  • Oracle基础(一)
          数据库系统:     微软的SQL  server ,  IBM的DB2, 甲骨文公司的Ora...
    99+
    2024-04-02
  • python基础一
    1989年的圣诞节期间,吉多·范罗苏姆为了打发时间,决心开发一个新的解释程序。 1991年,第一个Python解释器诞生,它是用C语言实现的,并且能调用C语言的库文件。 计算机不能直接理解任何除机器语言以为的语言,所以必须要把程序员所...
    99+
    2023-01-30
    基础 python
  • python基础(一)
    1.计算机是由什么组成的 CPU、内存、硬盘、输入输出设备 CPU 处理各种数据 相当于人的大脑 内存 存储临时数据 相当于人的临时记忆 硬盘 存储数据 相当于人的...
    99+
    2023-01-30
    基础 python
  • Python--基础一
    Python基础:print & input & 变量 & 运算符 & Python数据类型 & 运算符与表达式 注释 单行注释 #我注释了一行 多行注释 三个单引号'''括起来 ''' 我...
    99+
    2023-01-30
    基础 Python
  • Python基础(一)
    (1)加法的两端只能是数字或者字符串。      如 print( 'kkk' + 12 + 'kkk' ) 是错误的,可修改为 print( 'kkk' + str(12) + 'kkk' ) 。类似 str() 的函数还有 int(...
    99+
    2023-01-31
    基础 Python
  • pyhon基础(一)
    1:输出。可以用print函数,在python3版本以上需要加().print('hello word!')hello word2:输入输入有raw_input(str)在python3以上版本是:input()函数代替。username=...
    99+
    2023-01-31
    基础 pyhon
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作