资讯专栏INFORMATION COLUMN

django基础(一)

MudOnTire / 3258人阅读

摘要:基础一项目的创建和启动项目容器是实际的项目包配置文件路由文件实用的命令行工具数据库配置文件更改服务启动新建项目方法一方法二和的区别一个项目下有多个一对多的关系配置注册视图函数视图函数配置配置启动项目对象是在这个模块中是有创建官方文档常

django基础-(一) 项目的创建和启动
(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]: 
In [3]: q = QueryDict("aa=bb&cc=dd&cc=xxx")                                                         
In [4]: QueryDict.fromkeys(["a","b","a"],value="val")                                                      
Out[4]: 
In [5]: q                                                                                                  
Out[5]: 
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]: 
In [10]: requests.put(url,data=data)                                                         Out[10]: 
用户登录练习

视图函数

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")

模板文件




    
    用户登录


  • username
  • password
  • 路由

    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"),
    ]

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/44956.html

    相关文章

    • django基础

      摘要:基础一项目的创建和启动项目容器是实际的项目包配置文件路由文件实用的命令行工具数据库配置文件更改服务启动新建项目方法一方法二和的区别一个项目下有多个一对多的关系配置注册视图函数视图函数配置配置启动项目对象是在这个模块中是有创建官方文档常 django基础-(一) 项目的创建和启动 (venv3) [vagrant@localhost ~]$ cd /vagrant/ (venv3) [v...

      williamwen1986 评论0 收藏0
    • 利用Django开发个小型商城(

      摘要:利用开发个小型商城我们本期的教程是教大家如何利用开发一个小型的商城这里所说的小型商城只是功能上的简朴。并于年月在许可证下发布。这套框架是以比利时的吉普赛爵士吉他手来命名的。是重量级选手中最有代表性的一位。 利用Django开发个小型商城 我们本期的教程是教大家如何利用Django开发一个小型的商城,这里所说的小型商城只是功能上的简朴。 作者:黄志成(小黄) 作者博客:博客地址 前提 1...

      RobinTang 评论0 收藏0
    • Django学习——Django基础1

      摘要:将业务逻辑,数据和界面显示分开,功能划分清晰,有利于降低软件的耦合度和团队开发。主要的作用就是将一个请求分发到不同的处理,再调用相应的和关于的安装及使用将在下一章共同学习。 Django 简单介绍django和mvc,mvt设计模式,如果已知悉可以直接跳过。 什么是Django 是由python写的一个开源的web应用程序框架,于2005年7月初次发布,并在2008年9月发布了第一个正...

      trilever 评论0 收藏0
    • Django搭建个人博客:前言

      摘要:是一个由写成的开源应用框架,可以用它以更快的速度更少的代码,搭建一个高性能的网站。本教程为零基础的小白准备,教你快速搭建一个自己的博客网站。让我们赶紧开始旅程吧有疑问请在杜赛的个人网站留言,我会尽快回复。 Django是一个由Python写成的开源Web应用框架,可以用它以更快的速度、更少的代码,搭建一个高性能的网站。 如果你以前从未接触过web开发,并且想快速上线自己的个性化网站,D...

      _ivan 评论0 收藏0

    发表评论

    0条评论

    最新活动
    阅读需要支付1元查看
    <