django基础

1.首先安装django
使用pip方式安装
pip install Django==1.7.7

2.新建一个项目
django-admin startproject eddyblog

3.新建一个app(模块)
python manage.py startapp blog

目录及文件说明
eddyblog----------项目目录名称
    eddyblog------项目相关设置文件目录
        ---__init__.py
        ---settings.py相关设置
        ---urls.py url映射
        ---wsgi.py入口文件
    blog-------app目录
        ---migrations 用来数据库管理版本
        ---__init__.py
        ---admin.py 
        ---models.py 模块文件
        ---tests.py 测试单元
        ---views.py 视图
    manage.py ---主文件
1.hello eddy
修改app中的views.py文件
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
    return HttpResponse('<h1>hello eddy</h1>')

修改项目中的urls.py文件
from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'django_1.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^blog/$','blog.views.hello'),
    url(r'^admin/', include(admin.site.urls)),
) 
在settings.py中添加app
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)           
运行项目
python manage.py runserver
这里会有一个报错说是数据文件不能读取,一般为权限问题
请在settings.py找到
#BASE_DIR = os.path.dirname(os.path.dirname(__file__))
BASE_DIR = './'

执行以下命令
python manage.py migrate    
python manage.py runserver
System check identified no issues (0 silenced).
December 13, 2015 - 20:29:13
Django version 1.7.7, using settings 'django_1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BRE
这样在网页中访问127.0.0.1:8000/blog即可得到自己的网页
hello eddy   

2.传递参数
修改views.py文件
from django.shortcuts import render
from django.http import HttpResponse
def hello(request,offset):
    return HttpResponse('<h1>hello eddy:%s</h1>' %offset)
修改urls.py文件
from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'django_1.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^blog/(\d+)$','blog.views.hello'),
    url(r'^admin/', include(admin.site.urls)),
)
运行项目
输入网址127.0.0.1:8000/blog/123
得到
hello eddy:123
127.0.0.1:8000/blog/456
hello eddy:456

小结:
1.请求进入blog/
2.django通过root_urlconf配置决定urlconf
3.django在urlconf中所有的url模式中查询第一个匹配到blog的条目
4.如果找到,调用相应视图函数
5.视图函数返回一个HttpResponse
6.django转换HttpResponse为一个合适的http response一web page显示出来

3.后台admin
models文件
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField(default=18)

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    url = models.URLField()
    protal = models.ImageField()
    author = models.ForeignKey(Author)

python manage.py makemigrations     
python manage.py migrate

在admin.py中注册models中的两个类
from django.contrib import admin
from  blog.models import *
admin.site.register(Article)
admin.site.register(Author) 

python manage.py syncdb
根据提示输入内容
http://127.0.0.1:8000/admin/ 
即可登陆后台

Blog
Articles	Add Change
Authors	        Add Change  
就可在网页添加数据了

template模板
非常简单
首先在views.py中
def eddy(request):
    return render(request,'hello.html')
然后在项目目录下简历一个templates的文件
编写hello.html文件
然后在urls.py中添加url
url(r'^eddy/$','blog.views.eddy'),
这样就可以使用hell.html文件了

模板的tag和filter
tag:{% %} {{ }} {% %} 
block/endblock
comment
csrf_token
cycle
if/else/endif
for/endfor
url
static 
inclued/extend  

filter:
add
capfirst
center
cut
join
date/time
length
lower
random
title
from django.shortcuts import render,render_to_response
from django.http import HttpResponse

def hello(request,offset):
    return HttpResponse('<h1>hello eddy:%s</h1>' %offset)
def eddy(request):
    name = 'Eddy'
    age =18
    l1 = [1,2,3,4,5,6,7,8,9]
    # return render(request,'hello.html',locals())
    return render_to_response('hello.html',{'name':name,'age':age,'l1':l1})
    
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
{% for i in l1 %}
<pre>{{ i }}</pre>
{% endfor %}
<h1>Hello {{ name|lower }} Age {{ age|add:'2' }}</h1>
</body>
</html>
1
2
3
4
5
6
7
8
9
Hello eddy Age 20
可以看到Eddy变为eddy 18变为20


你可能感兴趣的:(django基础)