django下载安装

pip3 install django==1.11.9

2、创建一个django project

django-admin startproject mysite   #创建了一个名为"mysite"的Django 项目
manage.pysettings.pyurls.pywsgi.py
python manage.py runserver 127.0.0.1:8080  #此时已经可以启动django项目了,只不过什么逻辑也没有呢

通过指令运行项目的时候,可以不写ip地址,如果不写,默认是127.0.0.1

python manage.py runserver 8080

如果连端口都不写,默认是8000端口

python manage.py runserver

pycharm创建项目

手动创建应用

python manage.py startapp app01

写项目

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

用户: http:127.0.0.1:8001/login/

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 写逻辑视图
views.py

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('登录失败!')

创建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), 第一个参数:路径正则字符串 第二个参数:对应的视图函数

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