Django项目的创建
安装django,参考:http://www.cnblogs.com/0bug/p/8044806.html
django依赖python解释器,安装目录 C:\\Python36\\Scripts
创建项目
django-admin startproject project_name
项目与应用:一个项目可以由多个应用。一个应用完成一类功能。
创建应用(在项目中,cd project_name):
python manage.py startapp app_name
在Pycharm中创建django项目:
File-New Project-Django-Location-Interpreter-Application name-Create
项目目录:
Django项目登录设计
urls.py
from django.conf.urls import url from app_name import views urlpatterns = [ url(r‘^login/$‘, views.login), url(r‘^index/$‘, views.index), ]
views.py
from django.shortcuts import render, redirect def login(request): if request.method == ‘POST‘: u = request.POST.get(‘user‘) p = request.POST.get(‘pwd‘) if u == ‘lcg‘ and p == ‘123‘: return redirect(‘/index/‘) return render(request, ‘login.html‘) def index(request): return render(request, ‘index.html‘)
login.html(body部分)
<form action="/login/" method="post"> {% csrf_token %} <p><input type="text" name="user" placeholder="用户名"></p> <p><input type="password" name="pwd" placeholder="密码"></p> <p><input type="submit" value="登录"></p> </form>
index.html(body部分)
<h1>登录成功</h1>
启动项目
python manage.py runserver
路由分配系统
视图函数
模板语言
ORM
语法格式
简单的演示
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r‘^admin/‘, admin.site.urls), ]
书写格式:
urlpatterns = [ url(regex, view, kwargs=None, name=None), ]
def url(regex, view, kwargs=None, name=None): if isinstance(view, (list, tuple)): # For include(...) processing. urlconf_module, app_name, namespace = view return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace) elif callable(view): return RegexURLPattern(regex, view, kwargs, name) else: raise TypeError(‘view must be a callable or a list/tuple in the case of include().‘)
分组
用括号 "()"包裹的内容就是分组的内容,该内容传给视图函数,视图函数通过位置参数或关键字参数接收。
无名分组,位置参数:
urls.py
from django.conf.urls import url from app_name import views urlpatterns = [ url(r‘^showTime/(\\d{4})/(\\d{2})$‘,views.showTime ), ]
views.py
from django.shortcuts import HttpResponse def showTime(request, year, month): return HttpResponse(‘现在是 %s年%s月‘ % (year, month))
有名分组,关键字参数:
urls.py: urlpatterns = [ url(r‘^showTime/(?P<year>\\d{4})/(?P<month>\\d{2})$‘,views.showTime ), ] views.py: def showTime(request, month, year): return HttpResponse(‘现在是 %s年%s月‘ % (year, month))
相对于无名分组,有名分组使用?P<参数名>的方式通过关键字传参,位置参数接收的值会随着位置顺序变化而存在差异,关键字参数接收的值不会因位置顺序差异而不同。
别名
我们上面的登录设计里面,如果我们需要更改访问时候的url 比如login改成login1那么对应的login.html中form表单的action项也得改,如果频繁的改,势必会给我们带来很多不便,别名正式解决这样的需求的。
有了别名,我们在html界面里面action项里面只需要些别名。url中的login怎么改,html都会通过别名找到对应改过的login。
urls.py
urlpatterns = [ url(r‘^login/$‘, views.login,name=‘firstStep‘), ]
login.html
<form action="{% url ‘firstStep‘ %}" method="post"> ...... </form>
路由应用分发
--未完待续--