zoukankan      html  css  js  c++  java
  • django--基础1

    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
  • 相关阅读:
    POJ 3278 Catch That Cow(BFS)
    POJ 2488 A Knight's Journey(DFS)
    POJ 2386 Lake Counting(DFS)
    迷宫问题(BFS)
    两点(DFS)
    POJ 1001 Exponentiation(大数运算)
    Java IO流01-总叙
    hdu 2065 "红色病毒"问题(快速幂求模)
    POJ 2251 Dungeon Master(BFS)
    POJ 1321 棋盘问题(DFS)
  • 原文地址:https://www.cnblogs.com/zengluo/p/13388989.html
Copyright © 2011-2022 走看看