Django学习流程精简记录
来源:互联网 发布:若星汉天空 知乎 编辑:程序博客网 时间:2024/06/04 22:03
来做官方文档的内容翻译筛选
1、django-admin startproject mysite
2、python manage.py startapp polls
3、编写app里面的models.py文件
import datetimefrom django.db import modelsfrom django.utils import timezone# Create your models here.class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1)class Choice(models.Model): question = models.ForeignKey(Question) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text
4、python manage.py makemigrations
,为这些修改创建迁移文件
5、python manage.py migrate
,将这些改变更新到数据库中。
6、python manage.py createsuperuser
7、修改polls/admin.py让poll应用在管理站点中可编辑
from django.contrib import adminfrom .models import Questionadmin.site.register(Question)
8、创建一个模型管理对象(class),然后把该对象(class名)作为第二个参数传入admin.site.register(),来自定义管理表单
from django.contrib import admin# Register your models here.from .models import Questionclass QuestionAdmin(admin.ModelAdmin): fields = ['pub_date','question_text']admin.site.register(Question,QuestionAdmin)
9、把表单分割成字段集,fieldsets中每个元组的第一个元素是字段集的标题
from django.contrib import admin# Register your models here.from .models import Questionclass QuestionAdmin(admin.ModelAdmin): # fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}), ('时间信息',{'fields':['pub_date']}), ]admin.site.register(Question,QuestionAdmin)
10、创建Question对象的同时可以直接添加一组Choice
from django.contrib import admin# Register your models here.from .models import Question,Choiceclass ChoiceInline(admin.StackedInline): model = Choice extra = 3class QuestionAdmin(admin.ModelAdmin): # fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}), ('时间信息',{'fields':['pub_date']}), ] inlines = [ChoiceInline]admin.site.register(Question,QuestionAdmin)# admin.site.register(Choice)
这告诉Django:Choice对象在Question的管理界面中编辑。默认提供足够3个Choice的空间
11、默认地,Django显示每个对象的str()返回的内容。但有时如果我们能显示个别的字段将很有帮助。 我们使用list_display 选项来实现这个功能
from django.contrib import admin# Register your models here.from .models import Question,Choiceclass ChoiceInline(admin.TabularInline): model = Choice extra = 3class QuestionAdmin(admin.ModelAdmin): # fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}), ('时间信息',{'fields':['pub_date']}), ] inlines = [ChoiceInline] list_display = ('question_text','pub_date','was_published_recently')admin.site.register(Question,QuestionAdmin)# admin.site.register(Choice)
12、添加过滤器和搜索功能
from django.contrib import admin# Register your models here.from .models import Question,Choiceclass ChoiceInline(admin.TabularInline): model = Choice extra = 3class QuestionAdmin(admin.ModelAdmin): # fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}), ('时间信息',{'fields':['pub_date']}), ] inlines = [ChoiceInline] list_display = ('question_text','pub_date','was_published_recently') list_filter = ['pub_date'] search_fields = ['question_text']admin.site.register(Question,QuestionAdmin)# admin.site.register(Choice)
13、自定义管理界面模版
14、修改视图函数,修改urlconf,把app里面的urls.py包含进去
https://django-intro-zh.readthedocs.io/zh_CN/latest/part3/
# polls/urls.pyfrom django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'^$', views.index,name='index'), url(r'^(?P<question_id>[0-9]+)/$', views.detail,name='detail'), url(r'^(?P<question_id>[0-9]+)/results/$', views.results,name='results'), url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote,name='vote'),]
15、载入 polls/index.html 模板文件,并且向它传递一个上下文环境(context)
# polls/views.pyfrom django.http import HttpResponsefrom django.template import loaderfrom .models import Questiondef index(request): latest_question_list = Question.objects.order_by('-pub_date')[:5] template = loader.get_template('polls/index.html') context = { 'latest_question_list': latest_question_list, } return HttpResponse(template.render(context, request))
16.快捷函数render
from django.shortcuts import render# Create your views here.from django.http import HttpResponsefrom .models import Questionfrom django.template import loaderdef index(request): latest_question_list = Question.objects.order_by('-pub_date')[:5] # output = ','.join([p.question_text for p in latest_question_list]) # template = loader.get_template('polls/index.html') context = {'latest_question_list':latest_question_list} return render(request,'polls/index.html',context)
17.抛出 404 错误
# polls/views.pyfrom django.http import Http404from django.shortcuts import renderfrom .models import Question# ...def detail(request, question_id): try: question = Question.objects.get(pk=question_id) except Question.DoesNotExist: raise Http404("Question does not exist") return render(request, 'polls/detail.html', {'question': question})
18.快捷函数:get_object_of_404()
# polls/views.pyfrom django.shortcuts import get_object_or_404, renderfrom .models import Question# ...def detail(request, question_id): question = get_object_or_404(Question, pk=question_id) return render(request, 'polls/detail.html', {'question': question})
19.去除模板中的硬编码 URL,在 polls.urls 的 urls() 函数中通过 name 参数为 URL 定义了名字,你可以使用 {% url %} 标签代替它
20.为 URL 名称添加命名空间
# mysite/urls.pyfrom django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [ url(r'^polls/', include('polls.urls', namespace="polls")), url(r'^admin/', include(admin.site.urls)),]现在,编辑 polls/index.html 文件,从:<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>修改成:<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
20.编写视图函数,可以精简删除旧的 index、detail和 results 视图,并用 Django 的通用视图代替(第四部分)
21.编写表单做测试
22.有人要源码么?源码:http://pan.baidu.com/s/1bzJfzC
有学Django的一起呀!
中文翻译1:http://python.usyiyi.cn/documents/django_182/intro/tutorial02.html
中文翻译2:https://django-intro-zh.readthedocs.io/zh_CN/latest/whats_next/
- Django学习流程精简记录
- django开发流程记录
- django 学习文件记录
- django学习记录
- Django 学习记录
- django学习记录-RequestContext
- Django 1.10 学习记录
- Django学习记录
- 学习django问题记录
- django学习记录
- django学习记录(二)
- django学习记录-模型继承
- Django学习记录(三)
- Python Django 学习知识点记录
- 记录:django学习第一课:
- Django 学习,异常解决记录
- web 框架 Django 学习记录
- python 之django学习记录
- Tachyon:Spark生态系统中的分布式内存文件系统
- 算法笔记:数学问题+数论初步一(未完待续)
- 【R笔记】基于R构建tensorflow框架实现神经网络
- C语言-类型转换
- 4G 频段的分配
- Django学习流程精简记录
- 《致橡树》 舒婷
- 快速幂讲解
- Linux for Complete Beginners
- poJ-1312 棋盘问题
- Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S
- CODEFORCES掉RATING记 #2
- 文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简
- nyoj-27-水池数目