码迷,mamicode.com
首页 > 其他好文 > 详细

django--基础1

时间:2020-07-28 10:15:56      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:pre   ret   字符串   名称   应用   页面   submit   res   NPU   

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库,启动关闭项目与项目交互等,不管你将框架分了几个文件,必然有一个启动文件,其实他们本身就是一个文件。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。
wsgi.py ---- runserver命令就使用wsgiref模块做简单的web server,后面会看到renserver命令,所有与socket相关的内容都在这个文件里面了,目前不需要关注它。

 

两个框架模式

MVC  
    M:models数据库相关
    V:views 视图逻辑相关
    C:controller控制器 url分发 不同的路径找到不同的视图函数
MTV
    M:models数据库相关
    T:templates模板 ,HTML文件
    V:views 视图逻辑相关
    + url控制器 不同的路径找到不同的视图函数
MVVM 后面介绍

 

 

1 写项目

1 创建项目  first_pro
2 创建app  app01 
做一个登录页面的web项目,浏览器输入一个网址得到一个web页面

用户:  http:127.0.0.1:8001/login/


1 urls.py
    from django.conf.urls import url 
    from django.contrib import admin 
    from app01 import views


 urlpatterns = [
        # url(r‘^admin/‘, admin.site.urls),
        url(r^index/, views.index),  #配置路径,r‘^/index/‘,这个前置导航斜杠不需要添加.
    ]


2 写逻辑视图
    from django.shortcuts import render,HttpResponse 
    # Create your views here.

 def index(request):
        print(request.method) #‘POST‘ ‘GET‘
        if request.method == GET:
            return render(request,login.html) 
        else:
            # print(request.GET) 
            print(request.POST)
            username = request.POST.get(username) 
            password = request.POST.get(password) 
            if username == dazhuang and password == 123: 
                return HttpResponse(登录成功!)
            else:
                return HttpResponse(登录失败!)


3 创建html文件 
    在templates文件夹中创建一个login.html文件


<!DOCTYPE html>
        <html lang="zh-CN">
        <head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
          <meta name="viewport" content="width=device-width, initial-scale=1"> 
          <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
          <title>Bootstrap 101 Template</title> 
          <!-- Bootstrap -->
        </head>
        <body>

<h1>欢迎来到登录页面</h1>

<form action="/index/" method="post"> 
          用户名:<input type="text" name="username"> 
          密码:<input type="text" name="password">
          <input type="submit">

</form>
</body> 
        </html>

urls.py里面需要注意的问题
    url(r^index/, views.index),  第一个参数:路径正则字符串  第二个参数:对应的视图函数

views.py
    def login(request): 
        获取请求方法,request.method--GET,POST 
        request.GET -- GET请求发送来的所有数据,queryDict类型 
        request.POST -- POST请求发送来的所有数据,queryDict类型
            <input name=username> 
            request.POST.get(username) 
            request.GET.get(username)
        return HttpResponse(字符串)  --- 回复字符串数据
        retuen render(request,login.html)


get请求获取数据

def index(request):
    print(request.GET)  #<QueryDict: {‘username‘: [‘dazhuang‘], ‘password‘: [‘123‘]}> 
    username = request.GET.get(username)
    password = request.GET.get(password)
    print(username,password)

if username == dazhuang and password == 123: 
        return HttpResponse(登录成功!)
    else:
        return HttpResponse(失败!)


post请求提交数据时关掉一个认证机制,settings配置文件中

MIDDLEWARE = [ 
    django.middleware.security.SecurityMiddleware, 
    django.contrib.sessions.middleware.SessionMiddleware, 
    django.middleware.common.CommonMiddleware, 
    #‘django.middleware.csrf.CsrfViewMiddleware‘, 
    django.contrib.auth.middleware.AuthenticationMiddleware, 
    django.contrib.messages.middleware.MessageMiddleware, 
    django.middleware.clickjacking.XFrameOptionsMiddleware,
]

url配置

无名分组
url(r^books/(\d{4})/, views.books),

位置参数
    url(r^books/(\d{4})/, views.year_books),  #匹配年份的 
    url(r^books/(\d{4})/(\d{1,2})/, views.year_month_books), #匹配年份和月份的
# http://127.0.0.1:8000/books/2001/

   视图:
        def year_month_books(request,year,month):  #位置参数,第一个参数接收的就是无名分组路径中匹配 到的第一个分组的数据,第二个参数接收的就是无名分组路径中匹配到的第二个分组的数据
            print(year,month)
            # return render(request,‘books.html‘) 
            return HttpResponse(year+month)


有名分组

   url(r^books/(?P<year>\d{4})/(?P<month>\d{1,2})/, views.year_month_books), #匹配年份和月 份的

    def year_month_books(request,month,year):  #形参名称要和url中的分组名对应好,参数位置就没有要求
了
        print(year,month)

  # return render(request,‘books.html‘) 
        return HttpResponse(year+month)

默认值

 

# urls.py中
from django.conf.urls import url

from . import views
urlpatterns = [
    url(r^blog/$, views.page), 
    url(r^blog/page(?P<num>[0-9]+)/$, views.page),
]

# views.py中,可以为num指定默认值
def page(request, num="1"): 
    pass

 

django--基础1

标签:pre   ret   字符串   名称   应用   页面   submit   res   NPU   

原文地址:https://www.cnblogs.com/zengluo/p/13388989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!