前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django入门(1)

Django入门(1)

作者头像
py3study
发布2020-01-02 14:34:51
3150
发布2020-01-02 14:34:51
举报
文章被收录于专栏:python3python3

Django入门

项目创建和APP创建

  • 准备环境
代码语言:javascript
复制
python3 
virtualenv
pip3
pip3 install django==1.1
  • 项目创建,APP创建
代码语言:javascript
复制
django-admin startproject ops
cd ops
python3 manage.py startapp darshboard
cd darshboard #进入项目路径
touch urls.py #创建路由文件
  • 项目结构如下:
代码语言:javascript
复制
ops/
|-- darshboard
| |-- admin.py
| |-- apps.py
| |-- __init__.py
| |-- migrations
| |-- models.py
| |-- tests.py
| |-- urls.py
| `-- views.py
|-- db.sqlite3
|-- manage.py
`-- ops
    |-- __init__.py
    |-- settings.py
    |-- urls.py
    `-- wsgi.py
  • 项目注册
代码语言:javascript
复制
# vim ops/ops/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'darshboard.apps.DarshboardConfig' #在此处注册darshboard项目
]
  • 路由注册
代码语言:javascript
复制
# vim ops/ops/urls.py

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^darshboard/',include("darshboard.urls")), #注册app的urls
]

此时,一个完整的流程就好了

hello world

修改darshboard的路由

代码语言:javascript
复制
# vim ops/darshboard/urls.py

from django.conf.urls import url
from .views import index

urlpatterns = [
    url(r'^hello/', index,name='index'),
]

写一个视图函数

函数视图的定义: a. 就是一个普通函数 b. 接收一个HttpRequest实例作为第一个参数 c. 然后返回一个HttpResponse的实例

代码语言:javascript
复制
# vim ops/darshboard/views.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse('hello world')

项目启动&测试

  • 启动项目
代码语言:javascript
复制
python manage.py runserver 0:8080
  • 访问:

打开本地浏览器输入:

代码语言:javascript
复制
http://211.159.156.251:8080/darshboard/hello/

即可访问!

HttpRequest对象

  • 由Django创建

属性如下:

代码语言:javascript
复制
HttpRequest.scheme
HttpRequest.body
HttpRequest.path
HttpRequest.method
HttpRequest.encoding
HttpRequest.GET
HttpRequest.POST
HttpRequest.META

方法如下:

代码语言:javascript
复制
HttpRequest.get_host()
HttpRequest.get_port()
HttpRequest.get_full_path()
HttpRequest.is_secure()
HttpRequest.is_ajax()
  • 传递一个字符串作为页面的内容到HttpResponse构造函数
代码语言:javascript
复制
from django.http import HttpResponse
response = HttpResponse("here is the web page")
response = HttpResponse("Text only .please,content_type="text/plain")
  • 参考的views如下
代码语言:javascript
复制
from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
import json
def index(request):
    data = {
        'name':'wanghui',
        'age':20
    }
    data_1 = ["devops","python"]
    #return HttpResponse(json.dumps(data),content_type="application/json")   #返回的content-typet
    #return HttpResponse(json.dumps(data_1),content_type="application/json")
    return JsonResponse(data_1,safe=False)
    # return HttpResponse("Hello World!!",status=599)

模板

为了让数据更加美观。

POST和GET请求

  • GET请求与传参
代码语言:javascript
复制
- method
- GET
  • POST提交数据

QueryDict对象

方法练习

代码语言:javascript
复制
#  python manage.py shell
>>> from django.http import QueryDict
>>> data = QueryDict('a=12&a=123&b=233')
>>> data.urlencode()
'a=12&a=123&b=233'

数据库同步

  • 官方给出的数据库连接设置
代码语言:javascript
复制
https://docs.djangoproject.com/en/1.11/ref/settings/#databases
  • 数据库同步相关命令
代码语言:javascript
复制
python manage.py showmigrations
python manage.py sqlmigrate sessions 0001
python manage.py dbshell   # 进入shell模式

创建用户

  • django-shell创建用户
代码语言:javascript
复制
# 方式一:
(venv3) [wanghui@www ops]$ python manage.py shell
Python 3.6.1 (default, Jun 22 2018, 18:25:52) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth.models import User
>>> User.objects.create_user('rock','12272@qq.com','123456')   #创建普通用户
>>> u = User.objects.get(username='rock')     #查找用户
>>> u.set_password('654321')       #修改密码
>>> u.save()                                   #保存
-------------------------------------------------------------------------------------------------------------
# 方式二:
(venv3) [wanghui@www ops]$ python manage.py createsupperuser

用户登录小练习

重点在于对函数视图的练习

  • darshboard/views.py
代码语言:javascript
复制
from django.shortcuts import render
from django.http import HttpResponse,JsonResponse,QueryDict
from django.template import loader,Context,Template
from django.contrib.auth.models import User
from django.contrib.auth import login,authenticate

def user_login(request):
    # print(request.GET)
    # 获取提交过来的用户名&密码
    if request.method == "GET":     #get请求的话,就直接返回页面
        return render(request, 'user_login.html')
    elif request.method == "POST":  #post就要获取用户名和密码
        username = request.POST.get("username")
        password = request.POST.get("password")
    # 根据用户名取出这个记录是否存在
        user_obj = authenticate(username=username,password=password)
        if user_obj:
            login(request,user_obj)
            print("登陆成功!")
        else:
            print("登陆失败!")
    elif request.method == 'DELETE':      # 通过delete方法获取请求体
        data = QueryDict(request.body)    # 获取delete的请求体
        print(data)
    return HttpResponse("")
  • darshboard/urls.py #指定路由
代码语言:javascript
复制
from django.conf.urls import url,include
from django.contrib import admin
from .views import index,index_template,index_methods,user_login
urlpatterns = [
    url(r'^user_login',user_login)
]
  • darshboard/user_login.html
代码语言:javascript
复制
<ul>
    <form method="DELETE" action="#">   
        <li>用户名:<input type="text" name="username"></li>
        <li>密码:<input type="text" name="password"></li>
        <li><input type="submit"></li>
    </form>
</ul>

关于delete方法的请求方式

代码语言:javascript
复制
在linux本地机器上执行:
curl -XDELETE http://127.0.0.1:8080/darshboard/user_login/ -d username=rock -d password=654321
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django入门
    • 项目创建和APP创建
      • hello world
        • 修改darshboard的路由
        • 写一个视图函数
        • 项目启动&测试
      • HttpRequest对象
        • 模板
          • POST和GET请求
            • QueryDict对象
          • 数据库同步
            • 创建用户
              • 用户登录小练习
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档