django的app

在 mysite的项目下创建 article app

pythone3 manage.py startapp article

article下的目录

admin.py            #设置管理员页面的显示
__init__.py
models.py           #数据库模型在这里定义
apps.py             #app的配置文件
migrations          #执行 python3 manage.py makemigrations 生成的对应sql文件的文件夹
__pycache__
tests.py            #django的调式文件
views.py            #视图文件定义回调函数
urls.py             #url设置

templates          #文件夹默认没有,可以创建 ,存放模板文件
static             #文件夹默认没有,存放静态文件


models.py的文件设置内容

from djang.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.

定义数据库模型,要继承models.Model
class Article(models.Model):

    #title 表示数据库表里的字段 models.CharField 表示数据的类型 max_length表示数据的长度
    title = models.CharField(max_length=30)
    content = models.TextField()

    #当我们使用python3 manage.py makemigrations  
    #python3 manage.py migrate时
    #我们想在想添加created_time字段于是我们写了如下内容
    #created_time = models.DateTimeField() 
    #然后保存
    #然后输入
    #python3 manage.py makemigrations 会报一个提示
    #这是因为前面的字段已经有值,创建created_time,django 不知道用什么数据对应前面的数据
    #解决方法
    #1.输入python3 manage.py makemigrations 有提示 输入 1  
    #在输入 timezone.time
    #2.直接设置默认值 dafault表示默认值
    #created_time =models.DateTimeField(default=timezone.now)

    #当新增字段时自动添加时间(在创建表的时间,后面改的数据不会影响该时间的变化)
    #created_time =models.DateTimeField(auto_now_add=True)

   #自动用现在的时间给last_updated_time(当改变字段的内容是时间会变化)
   #last_updated_time = models.DateTimeField(auto_now=True)
#--------------------------------------------------------------------
   #设置外键(即另一个模型或另一张表)
    #models.ForeignKey(模型名,对另个表的操作,default默认值)

    #字段名的修改
    #如auther错误,将其改成author
    #然后执行 python3 manage.py makemigrations 
    #会提示是非将article.auther 改为 article.author y是修改,n不改

    #auther = models.ForeignKey(User,on_delete=models.DO_NOTHING,default=1)
    author = models.ForeignKey(User,on_delete=models.DO_NOTHING,default=1)

#-------------------------------------------------------------------
 #布尔数据类型的设置
    is_deleted =models.BooleanField(default=False)
    #数值类型
    readed_num =models.IntegerField(default=0)


admid.py内容

from django.contrib import admin

# Register your models here
from .models import Article
#

#用于设置显示在管理员页面的模型
#只显示模型不显示模型中的内容
#admin.site.register(Article)
#------------------------------------------------------

#用于设置管理员页面显示模型中的内容
#title content是模型的字段
#类名可以自己定义
class ArticleAdmin(admin.ModelAdmin):

    #将模型的字段以元组赋值给list_display ,list_display是一个特有的变量
    list_display= ("id","title","content",'author','is_deleted','created_time',"last_updated_time")


    #id以升序的形式显示在管理页面,降序则将"id"改为 "-id"
    ordering=("id",)
admin.site.register(Article,ArticleAdmin)

#---------------------------------------------------------------------------

#@admin.register(Article)

views.py设置

from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse,Http404
from .models import Article

# Create your views here.
#def article_detail(request,article_id):
#    #错误处理1
#    #Article.objects.get(条件)
#    try:
#         article =Article.objects.get(id=article_id)
#    except Article.DoesNotExist:
#        return HttpResponse("不存在")
#    return HttpResponse("文章标题: %s <br> 文章内容: %s " % (article.title,article.content))
#---------------------------------------------------


#def article_detail(request,article_id):
#    #错误处理2
#    try:
#         article =Article.objects.get(id=article_id)
#         context ={}
#         context["article_obj"]=article
#         return render(request,'article_detail.html',context)

#          except Article.DoesNotExist:
               raise Http404("not exist")
#     return HttpResponse("<h3>文章标题: %s</h3> <br><p> 文章内容: %sp> " % (article.title,article.content))


#----------------------------------------------------------------
def article_detail(request,article_id):
    #错误处理3
         article = get_object_or_404(Article,id=article_id)
         context ={}
         context["article_obj"]=article
         return render(request,'article_detail.html',context)

#------------------------------------------------------------------
#文章列表

def article_list(request):

  #将模型中的数据全部赋值给articles
  # articles =Article.objects.all()

  #将过滤模型中is_deleted=False的数据
   articles =Article.objects.filter(is_deleted=False)
   context={}
   context['articles']=articles
   return render(request,'article_list.html',context)

urls.py设置

from  django.urls import path
from . import views
urlpatterns =[
     path("<int:article_id>",views.article_detail,name='article_detail'),
     path("",views.article_list,name="article_list")



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_53558470

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值