django入门——一卷风云琅琊榜,囊尽天下奇英才

通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点。

环境搭建

使用anaconda建立虚拟环境,conda create -n django_nirvanaInFire python==3.6

优点:不影响本地安装的全局解释器,避免包的混乱和版本冲突。

定义模型

本例完成“人物——榜单”信息的维护,需要存储两种数据:榜单,人物。

榜单表结构设计:

    榜单表名称——Leaderboard
        榜单名称:boardtitle
        发布时间:bpub_time
        
人物表结构设计:
    人物表名称——HeroInfo
        名称:hname
        性别:hgender
        简介:hcontent
        所属榜单:hboard

榜单——人物:一对多

class Leaderboard(models.Model):
    boardtitle=models.CharField(max_length=50)
    bpub_time=models.DateTimeField()
    def __str__(self):
        return '%d'%self.pk
class HeroInfo(models.Model):
    hname=models.CharField(max_length=20)
    hgender=models.BooleanField()
    hcontent=models.CharField(max_length=1000)
    hboard=models.ForeignKey('Leaderboard',on_delete=models.CASCADE)
    def __str__(self):
        return '%d'%self.pk

数据库配置在setting中,默认sqlite。

如果在新建app中开发,需要注册应用,在setting中的INSTALLED_APPS中添加即可。

使用后台管理

管理部分分为内容发布和公共访问。

内容发布部分主要负责增删改操作,django会根据定义的模型类自动生成管理模块。

class LeaderboardAdmin(admin.ModelAdmin):
    list_display = ['boardtitle','bpub_time']
    # inlines = [HeroInline]
class HeroInfoAdmin(admin.ModelAdmin):
    list_display = ['hname','gender','hcontent','hbtitle']
    list_filter = ['hname']
    search_fields = ['hname','hcontent']
    list_per_page = 3
admin.site.register(Leaderboard,LeaderboardAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)

编写视图

模块url需要在主url中定义。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('board/',include('leaderboard.urls'))
]

定义视图函数

def index(request):
    boardlist=Leaderboard.objects.all()
    return render(request,'leaderboard/index.html',context={'boardlist':boardlist})

定义模板

定义前端模板,支持模板渲染。

<h1>{{ board.boardtitle }}</h1>

<ul>
    {% for hero in heros %}
    <li>{{ hero.hname }}---{{ hero.hcontent }}</li>
    {% endfor %}
</ul>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值