Django中杂七杂八的事情

学习请移步至:https://docs.djangoproject.com/zh-hans/2.1/intro/

 

创建管理员:py manage.py createsuperuser,之后按提示输入账号密码等

启动:py manage.py runserver

输入 localhost:8000/admin,输入管理员的账号密码,即可登录

可修改settings.py文件中的相关字段,将Django设置为中文

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

1.模型

之后修改admin.py,将新建模型添加到管理员界面。

可以自行编写管理员界面。

from django.contrib import admin

# Register your models here.
#导入相关模型
from .models import Question, Choice


class ChoiceAdmin(admin.TabularInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['question_text']}),
        ('Date', {'fields': ['pub_date'], 'classes': ['collapse']})
    ]
    # 接受列表,在question下拼接对应的choice
    inlines = [ChoiceAdmin]
    # 列表表头
    list_display = ('question_text','pub_date')
    # 增加搜索框
    search_fields = ['question_text']
    # 增加日期条件
    list_filter = ['pub_date']
    # 设置分页
    list_per_page = 5


admin.site.register(Question, QuestionAdmin)

DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。

DateTimeField.auto_now

  这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。

DateTimeField.auto_now_add

  这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。

若将上述两个属性设置为TRUE,则在Django的admin中是只读状态。

html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td>{{ infor.updatetime|date:"Y-m-d H:i:s" }}</td> 类似的过滤器。刷新页面,即可正常显示。

2.视图

视图必须做的只有两件事:返回一个HttpReponse对象,或者抛出异常。

普通视图(主要是查找数据):

查询范围数据:model.objects.order_by('****')[:]

查询具体数据:使用 get_object_or_404(model, pk=id),model为模型实例,id为需要查询的数据键值

表单视图(增加、修改数据):

  增加,

    if request.method != 'POST':
        form = modelForm()
    else:
        form = modelForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('***:***'))
    return render(request, '***/***.html', {'form': form})

修改,

    blog_message = get_object_or_404(blog, pk=blog_id)
    author_message = blog_message.author
    if request.method != 'POST':
        form = blogForm(instance=blog_message)
    else:
        form = blogForm(instance=blog_message, data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('blog:blogMessage',args=[author_message.id] ))
    return render(request, 'blog/editBlog.html', {'form': form, 'author': author_message, 'blog': blog_message})

首先判断该请求类型,在根据请求类型执行相关操作。

修改类表单:以用户-博客为例。

    先获取相关博客,并关联至相关用户。若为POST请求,则使用实参instance,data。实参instance填充既有数据,根据data=request.POST中的相关数据进行相应的修改。若不为POST请求,则只传入实参instance,使用既有数据填充表单即可。

3.模板

模板继承:创建父模板,定义相关页面属性,在后续的模板中,使用{%extends "*****/***.html"%}导入父模板。

  在父模板中,还可以使用{%block name%}{%endblock name%}定义一个名为name 的block标签,使后续模板能够在该区域中添加指定的内容。(在子模板中,也使用同样的语法标准进行引用赋值。)

4.表单

from django import forms
from .models import blog,author

class authorAdd(forms.ModelForm):
    class Meta:
        model = author
        fields = ['author_name','author_sex','author_age',]

导入django的forms包,并导入项目对应的model类。

创建class,继承自forms.ModelForm,其中的内部类表示表单的来自某个模型,fields表示需要在表单中显示的字段。

想要定制化表单格式,可以使用:

widgets = {'blog_text':forms.Textarea(attrs{'cols':80}),}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值