django_day10_项目相关

  • 展示数据的方法

    • 数据对象obj

      • 普通字段
      1. obj.字段名 ====》 数据库该字段的值
      • 带choices参数的

        1. obj.字段名 ====》 数据库该字段的值
        2. obj.get_字段名_display() ====》 要显示的结果
      • 外键

        1. obj.外键====》 所关联的对象 __str__ 方法
        2. obj.外键.字段
      • 自定义方法

        from django.utils.safestring import mark_safe
        def show_publish_status(self):
        color_dict = {True:'green',False:'#772a4d'}
        return mark_safe('<span style="background: {};color: white;padding: 3px">{}</span>'.format(color_dict[self.publish_status],self.get_publish_status_display()))
  • 定义modelform

    class ArticleForm(forms.ModelForm):
    class Meta:
    model = models.Article#只能是model
    fields = "__all__"
    exclude = ['detail']
    # widgets = {
    # 'title':forms.TextInput(attrs={'class':'form-control'})
    # }
    def __init__(self,*args,**kwargs):
    super().__init__(*args,**kwargs)#执行父类方法
    #自定义的操作
    # self.fields 是个有序字典 字典中的值就是字段的对象
    for field in self.fields.values():#field 就是models中定义的字段
    field.widget.attrs['class'] = 'form-control'#field.widgrt
    # 是拿到对应的插件的对象field.widget.attrs 然后拿到对应的属性做修改
  • 使用form

    def article_add(request):
    form_obj = ArticleForm()#什么都不传
    if request.method == 'POST':
    form_obj = ArticleForm(request.POST)#拿到form表单
    #开始校验
    if form_obj.is_valid():
    #获取文章详情字符串
    detail = request.POST.get('detail')
    # 创建文章详情对象
    detail_obj = models.ArticleDetail.objects.create(content=detail)
    form_obj.instance.detail_id = detail_obj.pk
    form_obj.save() # form_obj.instance.save()
    return redirect('article_list')
    return render(request, 'article_add.html', {'form_obj': form_obj}) #关联了俩个表
    def article_edit(request, pk):
    obj = models.Article.objects.filter(pk=pk).first() # 查到一个queryset对象 first拿到第一个 如果没有则返回为null
    form_obj = ArticleForm(instance=obj) #传了个instance对象
    if request.method == 'POST':
    form_obj = ArticleForm(request.POST, instance=obj) # 包含数据库没修改之前的数据 以及表单提交的数据
    if form_obj.is_valid(): # 通过校验
    form_obj.instance.detail.content = request.POST.get('detail')
    form_obj.instance.detail.save()# 修改以后 还要保存 文章详情
    form_obj.save()# 保存文章的信息
    return render(request, 'article_edit.html', {'form_obj': form_obj, 'obj': obj}) #HTML
    <form class="form-horizontal" method="post" action="" novalidate>
    {% csrf_token %}
    {% for field in form_obj %} {{ field.id_for_label }} # 拿到id {{ field.label }} #提示信息 models中的 verbose_name {{ field }} #生成input框 {{ field.errors.0 }} #错误 {% endfor %}
    </form>
  • 让用户上传图像

    #model中添加ImageField
    avatar = models.ImageField(upload_to='img/avatar',default='img/avatar/default.jpg') #ImageField 依赖pillow模块 #settings.py中的配置
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR,'media') #urls.py中的配置
    from django.views.static import serve
    from django.conf import settings
    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('app01.urls')),
    url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}),
    ] #模板中使用
    注册时:form中加上 enctype="multipart/form-data"
    显示时:<img width="20px" src="/media/img/avatar/张伟.jpg" alt=""> #views中
    form_ojb = RegForm(request.POST,request.FILES)
  • 使用django-ckeditor

    1. 下载pip install django-ckeditor

    2. 注册app

      INSTALLED_APPS = [
      ........
      'ckeditor',
      'ckeditor_uploader',
      ]
    3. urls.py

      urlpatterns = [
      .........................
      url(r'^ckeditor/', include('ckeditor_uploader.urls')),
      ]
    4. models.py

      class ArticleDetailForm(forms.ModelForm):
      
          class Meta:
      model = models.ArticleDetail # 只能是model
      fields = "__all__"
      form_obj = ArticleDetailForm()#实例化
    5. html

      {{ form_obj.content }}

      引用静态文件

      {% block js %}
      {% load static %}
      <script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
      <script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
      {% endblock %}
    6. 上传需要认证,取消认证

      #将staff_member_required这个装饰器取消掉
      urlpatterns = [
      url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
      url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
      ] #改为下面这样
      from ckeditor_uploader import views urlpatterns = [
      url(r'^upload/', views.upload, name='ckeditor_upload'),
      url(r'^browse/', never_cache(views.browse), name='ckeditor_browse'),
      ]

django_day10_项目相关的更多相关文章

  1. 根据funID,personID获取最新规划包项目相关信息

    1.定义:根据funID,personID获取最新规划包项目相关信息(code projecttype(阶段) Pname(code+name) projectID) 项目表tbl_cfg_Proje ...

  2. django_day11_项目相关

    django_day11_项目相关 新增和编辑 路由 url(r'^category_add/$', views.category_change, name='category_add'), url( ...

  3. django_day09_项目相关

    django_day09_项目相关 展示数据: 给模板一个querySet对象列表,循环出对象列表obj 普通字段 obj.字段名 ----> 数据库中的数据 外键 obj.外键 ------- ...

  4. django_day08_项目相关

    django_day08_项目相关 定义数据库表 from django.db import models # Create your models here. class User(models.M ...

  5. IDEA 从SVN检出项目相关配置

    1.新建好一个工程,然后通过SVN检出项目 2.检出后一般tomcat的环境是配置好的,点击上方Project Structure按钮,弹出窗体,查看Project项,一般没问题,如果要配置就配置Pr ...

  6. IntelliJ IDEA 项目相关的几个重要概念介绍

    必备材料介绍 IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:Eclipse 用户可以看:http ...

  7. Java面试06|项目相关介绍

    1.明确你的项目到底是做什么的,有哪些功能 广告投放机:项目主要是为移动端有针对性的进行广告展示. 媒体管理平台SSP:为媒体端实现多种变现途径 (1)广告投放机中关于广告检索与排序的功能 1.广告检 ...

  8. 预置第三方apk到MTK项目相关问题总结

    目前5.0之后项目预置方式通用步骤为: 建立apk文件夹;  置目标apk到该文件夹下;   解压缩apk查看是否包含lib/文件夹(apk项目是否包含lib库文件);  在该文件夹下编写Androi ...

  9. Linux 首先基本包安装(vim啊什么的),源,源优化,项目架构介绍, (LNMuWsgi)Django项目相关软件mysql,redies,python(相关模块)安装配置测试

    内容 补充: 查看已启动服务的端口 netstat -tulnp |grep (方式1) ss -tulnp|grep (方式2) 前期铺垫: . Linux要能上网 . 掌握Linux软件包安装方法 ...

随机推荐

  1. c++可视化性能测试

    阅读前注意 本文所有代码贴出来的目的是帮助大家理解,并非是要引导大家跟写,许多环境问题文件问题没有详细说明,代码也并不全面,达不到跟做的效果.建议直接阅读全文即可,我在最后会给出详细代码地址,对源代码 ...

  2. 这不会又是一个Go的BUG吧?

    hello,大家好呀,我是小楼. 最近我又双叒叕写了个BUG,一个线上服务死锁了,不过幸亏是个新服务,没有什么大影响. 出问题的是Go的读写锁,如果你是写Java的,不必划走,更要看看本文,本文的重点 ...

  3. SAP APO-部署选项

    SAP SCM Server安装提供SAP APO功能模块的所有功能. 在SAP APO的附加部署模型中,以下组件可用作SAP APO工具的一部分- OTE-在附加部署模型中,无法通过SAP SCM服 ...

  4. UiPath参数介绍和使用

    一.参数介绍 用于将数据从一个项目传递到另一个项目.在全局意义上,它们类似于变量,因为它们动态地存储数据并传递给它.变量在活动之间传递数据,而参数在自动化之间传递数据.因此,它们使你能够一次又一次地重 ...

  5. 深入理解 volatile 关键字

    volatile 关键字是 Java 语言的高级特性,但要弄清楚其工作原理,需要先弄懂 Java 内存模型.如果你之前没了解过 Java 内存模型,那可以先看看之前我写过的一篇「深入理解 Java 内 ...

  6. Jenkins + maven + svn 自动部署项目

    1.安装Jenkins sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins. ...

  7. Java 集合常见知识点&面试题总结(上),2022 最新版!

    你好,我是 Guide.秋招即将到来(提前批已经开始),我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 你也可以在网站(javaguide.cn)上在线阅读, ...

  8. NC204382 中序序列

    NC204382 中序序列 题目 题目描述 给定一棵有 \(n\) 个结点的二叉树的先序遍历与后序遍历序列,求其中序遍历序列. 若某节点只有一个子结点,则此处将其看作左儿子结点 示例1 输入 5,[3 ...

  9. springboot集成swagger2报Illegal DefaultValue null for parameter type integer

    springboot集成swagger2,实体类中有int类型,会报" Illegal DefaultValue null for parameter type integer"的 ...

  10. Docker详解(上)

    Docker 学习 Docker概述 Docker安装 Docker命令 镜像命令 容器命令 操作命令 ... Docker镜像 容器数据卷 DockerFile Docker网络原理 IDEA整合D ...