Learn Django

来源:互联网 发布:翡翠网络推广方案 编辑:程序博客网 时间:2024/06/06 00:12


[+] 创建项目

django-admin.py stratproject Helloworld

[+] 开启服务

manage.py runserver 0.0.0.0:8000

[+] view.py

from django.http import HttpResponse def hello(request):    return HttpResponse("Hello world ! ")

[+] urls.py

from django.conf.urls import url from . import view urlpatterns = [    url(r'^$', view.hello),]

正则表达式的规则可以改 如:r'^hello$'

则 访问ip:8000/hello时 调用view.hello


[+] 创建并使用模板

HelloWorld/|-- HelloWorld|   |-- __init__.py|   |-- __init__.pyc|   |-- settings.py|   |-- settings.pyc|   |-- urls.py|   |-- urls.pyc|   |-- view.py|   |-- view.pyc|   |-- wsgi.py|   `-- wsgi.pyc|-- manage.py`-- templates    `-- hello.html

settings.py中TEMPLATES中的DIRS改为 [BASE_DIR+"/templates",],

更改 view.py 为

# -*- coding: utf-8 -*- #from django.http import HttpResponsefrom django.shortcuts import render def hello(request):    context          = {}    context['hello'] = 'Hello World!'    return render(request, 'hello.html', context)

[+] 标签的使用
例如:
{% if condition1 %}   ... display 1{% elif condition2 %}   ... display 2{% else %}   ... display 3{% endif %}
菜鸟教程的便签用法链接

[+] 配置数据库
修改settings.py 的 DATABASE
DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django        'NAME': 'test',        'USER': 'test',        'PASSWORD': 'test123',        'HOST':'localhost',        'PORT':'3306',    }}
[+] 创建模型
创建App ~# django-admin.py startapp TestModel
HelloWorld|-- TestModel|   |-- __init__.py|   |-- admin.py|   |-- models.py|   |-- tests.py|   `-- views.py

APP目录如图

更改 models.py 文件
from django.db import models class Test(models.Model):    name = models.CharField(max_length=20)

setting 进行一下设置
INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'TestModel',               # 添加此项)
bash命令
$ python manage.py migrate   # 创建表结构$ python manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更$ python manage.py migrate TestModel   # 创建表结构

[+] 数据库调用
urls.py进行设置
from django.conf.urls import *from . import view,testdb urlpatterns = [    url(r'^hello$', view.hello),    url(r'^testdb$', testdb.testdb),]
添加数据
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作def testdb(request):    test1 = Test(name='runoob')    test1.save()    return HttpResponse("<p>数据添加成功!</p>")


获取数据
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作def testdb(request):    # 初始化    response = ""    response1 = ""            # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM    list = Test.objects.all()            # filter相当于SQL中的WHERE,可设置条件过滤结果    response2 = Test.objects.filter(id=1)         # 获取单个对象    response3 = Test.objects.get(id=1)         # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;    Test.objects.order_by('name')[0:2]        #数据排序    Test.objects.order_by("id")        # 上面的方法可以连锁使用    Test.objects.filter(name="runoob").order_by("id")        # 输出所有数据    for var in list:        response1 += var.name + " "    response = response1    return HttpResponse("<p>" + response + "</p>")
element = Test.Object.get(id=1)
        element.delete()
        element.name = "name"
        element.save()

[+]  GET请求

search.py
# -*- coding: utf-8 -*- from django.http import HttpResponsefrom django.shortcuts import render_to_response # 表单def search_form(request):    return render_to_response('search_form.html') # 接收请求数据def search(request):      request.encoding='utf-8'    if 'q' in request.GET:        message = '你搜索的内容为: ' + request.GET['q']    else:        message = '你提交了空表单'    return HttpResponse(message)

search_form.py
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body>    <form action="/search" method="get">        <input type="text" name="q">        <input type="submit" value="搜索">    </form></body></html>

urls.py规则改为
from django.conf.urls import urlfrom . import view,testdb,search urlpatterns = [    url(r'^hello$', view.hello),    url(r'^testdb$', testdb.testdb),    url(r'^search-form$', search.search_form),    url(r'^search$', search.search),]

[+] POST

post.html
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body>    <form action="/search-post" method="post">        {% csrf_token %}        <input type="text" name="q">        <input type="submit" value="Submit">    </form>     <p>{{ rlt }}</p></body></html>


search2.py
# -*- coding: utf-8 -*- from django.shortcuts import renderfrom django.views.decorators import csrf # 接收POST请求数据def search_post(request):    ctx ={}    if request.POST:        ctx['rlt'] = request.POST['q']    return render(request, "post.html", ctx)

urls.py
from django.conf.urls import urlfrom . import view,testdb,search,search2 urlpatterns = [    url(r'^hello$', view.hello),    url(r'^testdb$', testdb.testdb),    url(r'^search-form$', search.search_form),    url(r'^search$', search.search),    url(r'^search-post$', search2.search_post),]