pythonturtle菜鸟教程_【读书】Django教程(菜鸟教程)学习菜鸟教程的Django教程,链接如下:
安装:
pip install Django
如果pip < 1.4,使⽤:
或者clone代码:
创建⼀个项⽬:
django-admin.py startproject HelloWorld
创建项⽬中的⼀个app:
django-admin.py startapp TestModel
启动服务器⽅法:
python manager.py runserver 0.0.0.0:8000
访问⽅法: 浏览器输⼊
localhost:8000/
django采⽤mvc结构,在⼯程根⽬录下创建templates⽬录,并且修改主⼯程下的settings.py(参见# 修改位置部分):
...TEMPLATES = [
{
'BACKEND': 'plate.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR+"/templates",], #修改位置
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [下载安全控件为什么用不了
't_processors.debug',
'quest',
't_processors.auth',
'ssages',
],
},
},
]
...
这样,可以在templates中放置html⽂件,由render渲染出来。
映射规则:
修改主⼯程下的urls.py⽂件,这⾥把浏览器访问的路径映射到特定的类来处理,如:
urlpatterns = [
url(r'^hello$', view.hello),
]
这⾥的view是py⽂件,hello是其中的函数,⽤于处理对*.*.*.*:8000/hello格式的响应,它的主要功能是,将模板⽂件渲染出来,作为响应值,如:
from django.shortcuts import render
def hello(request):
context = {}
context['hello'] = 'Hello World!'
return render(request, 'hello.html', context)
其中hello.html是放置在templates中的⽂件,context中的内容是作为变量传递给hello.html的。
在模板⽂件中,是可以使⽤变量以及控制逻辑的。
使⽤变量⽅式,是 {{ xxx }},⽐如上⾯传递的参数会在hello.html中这样使⽤:{{ hello}}
控制逻辑的格式是
{% if xxx % } xxx {% endif %}
或者
{% for %} xxx {% endfor%}
等
注释的格式是
{# xxx #}
还可以继承:
在base.html中设定继承部分
{% block name %} xxx {% endblock %}
然后再⼦类中sub.html声明:
{% extends "base.html" %}
然后修改继承的段
{% block name %} xxx {%endblock %}
还可以包含:
{% include"xxx.html" %}
上⾯的hello处理,可以区分是GET处理还是POST处理:
hod == 'GET':
do_something()
hod == 'POST':
do_something_else()
可以通过参数字典直接获取传参,⽐如:
request.POST['q']
这⾥的'q'就是参数,通过它作为索引值获取到对应的参数。
⽐如表单提交的处理如下:
# 接收POST请求数据
def search_post(request):
ctx ={}
if request.POST:
ctx['rlt'] = request.POST['q']
return render(request, "post.html", ctx)
在响应函数的过程中,还可以跟数据库进⾏交互。
⾸先配置数据库: (也可以配置成mysql)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'USER': 'Jacob',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
}
}
创建⽤于数据库的app,同时将app名字加⼊到settings.py的INSTALLED_APPS项中。
然后就可以定义表了,⽐如:
# models.py
from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20)
然后让数据库把这个表创建起来: (下⾯的命令不要少⼀个)
python manage.py migrate #创建表结构
python manage.py makemigrationsTestModel #让 Django 知道我们在我们的模型有⼀些变更python manage.py migrate TestModel #创建表结构
操作数据库内容,就可以通过上⾯的类来使⽤,⽐如⽣成⼀个条⽬:
workbenchtest = Test(name='vvv')
test.save()
删除⼀个条⽬:
Test.objects.filter(id=1).delete()
更新⼀个条⽬:
Test.objects.filter(id=1).update(name='Google')
全更新:
Test.objects.all().update(name='all')
写好了数据库操作的代码后,记得在数据库app的⽬录下,修改admin.py⽂件:
ib import admin
dels import Test
# Register your models here.
ister(Test)
这⾥的admin,其实是django提供的⼀个管理页⾯,可以很⽅便的把数据库信息展⽰出来。再详细介绍下admin。
⾸先激活这个管理⼯具: 修改映射规则⽂件urls.py,在urlpatterns中添加条⽬:
url(r'^admin/', admin.site.urls),
创建⼀个超级⽤户:
python manage.py createsuperuser
这样,可以在浏览器中通过localhost:8000/admin/进⾏访问了。
可以在页⾯中,看到之前创建的相关数据库,并且操纵它们的内容。
同时,还可以⾃定义数据库展⽰的表单⽅式,⽐如定义⼀个Contact数据库:
class Contact(models.Model):
name = models.CharField(max_length=200)
董飞云excel基本教程age =models.IntegerField(default=0)
email = models.EmailField()
def __unicode__(self):
return self.name
在admin.py中注册的时候,这样⾃定义表单:
# Register your models here.
class ContactAdmin(admin.ModelAdmin):
fields = ('name', 'email')
ister(Contact, ContactAdmin)
还可以做列表样式,内联其它数据表,增加搜索栏等,⽰例如下:
# Register your models here.
class TagInline(admin.TabularInline):
model = Tag
vb编程题简单又好学class ContactAdmin(admin.ModelAdmin): list_display = ('name','age', 'email') # list search_fields = ('name',)
inlines = [TagInline] # Inline
jqueryhover用法fieldsets = (
['Main',{
'fields':('name','email'),
}],
['Advance',{
'classes': ('collapse',),
'fields': ('age',),
javascript和mysql菜鸟教程
}]
)
ister(Contact, ContactAdmin)完整代码⼯程参见:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论