小编cha*_*ndu的帖子

Django模板过滤器语法错误

我正在尝试使用此代码使用django内置的"默认"过滤器

{% load sekizai_tags static compress i18n %}
[...]
<title>{{ title|default:"nothing" }}</title>
Run Code Online (Sandbox Code Playgroud)

但它给了我以下例外

django.template.base.TemplateSyntaxError: default requires 2 arguments, 1 provided
Run Code Online (Sandbox Code Playgroud)

我在模板后端使用以下设置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            str(APPS_DIR.path('templates')),
        ],
        'OPTIONS': {
            'debug': DEBUG,
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            ],
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'allauth.account.context_processors.account',
                'allauth.socialaccount.context_processors.socialaccount',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
                'sekizai.context_processors.sekizai',
            ],
        },
    },
]
Run Code Online (Sandbox Code Playgroud)

我的编辑器将代码标记为无效,但我检查了几千次 https://docs.djangoproject.com/en/1.8/ref/templates/builtins/

这是作为例子给出的:

{{ value|default:"nothing" }}
Run Code Online (Sandbox Code Playgroud)

我还尝试更改title var的名称,以确保它不是保留关键字.

django templates filter built-in

28
推荐指数
1
解决办法
7650
查看次数

你如何在django中为表单编写保存方法?

我在Django中有两个模型:User(由Django预定义)和UserProfile.这两个通过外键连接.我正在创建一个允许客户编辑其用户个人资料的表单.因此,此表格将基于所提到的两种模型.

如何为此表单创建save()方法?完成保存功能有哪些步骤/要求?

这是我到目前为止在forms.py中所拥有的:

class UserChangeForm(forms.Form):
    #fields corresponding to User Model
    email = forms.EmailField(required=True)
    first_name = forms.CharField(max_length = 30)
    last_name = forms.CharField(max_length = 30)
    password1 = forms.CharField(max_length=30, widget=forms.PasswordInput)
    password2 = forms.CharField(max_length=30, widget=forms.PasswordInput)

    #fields corresponding to UserProfile Model
    gender = forms.CharField(max_length = 30, widget=forms.Select)
    year = forms.CharField(max_length = 30, widget=forms.Select)
    location = forms.CharField(max_length = 30, widget=forms.Select)

    class Meta:
        fields = ("username", "email", "password1", "password2", "location", "gender", "year", "first_name", "last_name")

    def save(self):
        data = self.cleaned_data
        # What to do next over here?
Run Code Online (Sandbox Code Playgroud)

这是一个好的开始,还是有人建议在我们开始编写save()函数之前更改它?

python django django-models django-forms

11
推荐指数
2
解决办法
1万
查看次数

django错误TemplateDoesNotExist

我是Django的新手,只是按照Django官方文档,但这是一个问题.

我创建了一个新的Django项目

Django 1.8.2 + PyCharm 4.5.1 + Python 3.4.3 + Windows 8.1

  - mysite
     - main
        - migrations
            __init__.py
        __init__.py
        admin.py
        models.py
        tests.py
        views.py
     - mysite
        __init__.py
        settings.py
        urls.py
        wsgi.py
     - templates
        hello.html
     db.sqlite3
     manage.py
Run Code Online (Sandbox Code Playgroud)

其中大部分是自动创建的,我修改如下:

模板/ hello.html的

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>Django test</title>
</head>
<body>
hello world!
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

mysite的/ urls.py

from django.conf.urls import include, url
from django.contrib import admin
from main.views import hello

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/$', hello),
]
Run Code Online (Sandbox Code Playgroud)

主/ views.py

from …
Run Code Online (Sandbox Code Playgroud)

python django django-templates

9
推荐指数
1
解决办法
1万
查看次数

如何验证表单中的电子邮件地址域?

给定一个电子邮件地址(例如:goelv@example.com),如何验证域("example.com")是否包含在给定的域列表中.如果域("example.com")不在指定的列表中,则表单应该引发某种错误.

这就是我目前在forms.py中所拥有的

class UserCreationFormExtended(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2",)

    def clean_email(self):
        data = self.cleaned_data['email']
        domain = data.split('@')[1]
        domain_list = ["gmail.com", "yahoo.com", "hotmail.com",]
        if domain not in domain_list:
            raise forms.ValidationError["Please enter an Email Address with a valid domain"]
        return data

    def save(self, commit=True):
        user = super(UserCreationFormExtended, self).save(commit=False)
        user.email = self.cleaned_data["email"]
        if commit:
            user.save()
        return user
Run Code Online (Sandbox Code Playgroud)

使用此代码,我得到错误"'type'对象没有属性' getitem '",它跟踪我的代码中的"raise forms.ValidationError [...]"行.

谁能看到我做错了什么?谢谢您的帮助!

python django validation django-forms django-validation

7
推荐指数
1
解决办法
1904
查看次数

django在post/put中休息嵌套关系

我是django rest api developpement的新手.我有两个模型,一个是类别,另一个是子类别.这是我的模特

class Category(models.Model):
    title = models.Charfield()
    brief = models.TextField()
    subcategories = model.ManyToManyField('Subcategory', blank=True)    
Run Code Online (Sandbox Code Playgroud)

我的序列化程序类

class CategorySerializer(serializers.ModelSerializer):
    title= serializer.Charfield()
    subcategories = Relatedfield(many=True)
Run Code Online (Sandbox Code Playgroud)

现在在视野中

def post(self, request, format = None):
    data=request.DATA
    serialize= CategorySerializer(data=request.DATA)
    if serializer.valid():
        serializer.save()
Run Code Online (Sandbox Code Playgroud)

如何{'title':"test",'subscategories':[{'description':'bla bla bla'},{'description':'test test'}]}在post方法中保存嵌套数据.

我在文档中读过这个

注意:嵌套序列化程序仅适用于只读表示形式,因为如果在更新实例时使用它们,则会出现模糊或不明显的行为.对于读写表示,您应始终使用FlatField子类之一来使用平面表示.

请让我建议哪些是正确的方法或解决方案来做django休息的嵌套关系post/put.

django django-models django-views django-rest-framework

6
推荐指数
1
解决办法
2702
查看次数

Django - 在/ blog的ImportError.没有名为urls的模块

我是django的新手,也是学习的过程.在做一些教程练习时遇到了一些我需要帮助的错误.

错误:/ blog处的ImportError.没有名为urls的模块

名为"blog"的应用程序下的urls.py文件是

from django.conf.urls.defaults import patterns, include, url
from mysite.blog.views import archive

urlpatterns = patterns('',
    url(r'^$',archive),
                       )
Run Code Online (Sandbox Code Playgroud)

名为"blog"的应用程序下的views.py文件是

# Create your views here.
from django.template import loader, Context
from django.http import HttpResponse
from mysite.blog.models import Blogpost

def archive(request):
    posts = BlogPost.objects.all()
    t = loader.get_template("archive.html")
    c = context({'posts': posts })
    return HttpResponse(t.render(c))
Run Code Online (Sandbox Code Playgroud)

项目'mysite'下的urls.py文件是

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Examples: …
Run Code Online (Sandbox Code Playgroud)

python django

4
推荐指数
1
解决办法
1万
查看次数

返回将您带到 Django 的页面

在 Python/Django 中,我有一个 FormView,它允许您临时添加某些字段选择。

(示例:从苏打水下拉列表中选择苏打水)

选择最喜欢的苏打水:[_Soda_Choices_Dropdown_] +添加苏打水

我希望能够即时添加苏打水,当我保存苏打水时,我希望成功 URL 是将您带到那里的页面。

【第1页】-->【新建汽水FormView】--成功->【第1页】

实现这一目标的最佳方法是什么?

谢谢!

python django formview

2
推荐指数
1
解决办法
2470
查看次数

django 1.8中的ImageField类不在模板中显示图像

根据代码,图像应该显示在index.html模板上,但似乎有一些问题img src

我的 models.py

from django.db import models


class Rockinfo(models.Model):
   rock_name = models.CharField(max_length=200,default="ac/dc")
   rock_img = models.ImageField(upload_to="%Y/%m/%d",default="1992/08/92")
   rank = models.IntegerField(default=0)

   def __str__(self):              
       return self.rock_name
Run Code Online (Sandbox Code Playgroud)

我的 admin.py

from django.contrib import admin
from .models import Rockinfo, Rockvids

class ChoiceInline(admin.TabularInline):
  model = Rockvids
  extra = 10

class RockinfoAdmin(admin.ModelAdmin):
  fieldsets = [
    ('The Fucking Band',               {'fields': ['rock_name']}),
    ('Image', {'fields': ['rock_img']}),
  ]
  inlines = [ChoiceInline]  
  list_display = ('rock_name', 'rock_img')
  list_filter = ['rank']
  search_fields = ['rock_name']


admin.site.register(Rockinfo, RockinfoAdmin)
Run Code Online (Sandbox Code Playgroud)

我的申请 urls.py

 from django.conf.urls import url …
Run Code Online (Sandbox Code Playgroud)

python django

1
推荐指数
1
解决办法
1436
查看次数