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