我有这门课:
class User(base):
__tablename__='User'
name = Column(.......
def __init__(self, name):
self.name = name
@validates('name')
def validate_name(self, key, name):
if blah blah blah:
return name
else:
raise exception.....
Run Code Online (Sandbox Code Playgroud)
创建一个新用户并将他存储在数据库中...
if __name__ == '__main__':
user = User('foo')
session.add(user)
session.commit() #validation works here
Run Code Online (Sandbox Code Playgroud)
更新用户时:
if __name__ == '__main__':
user = session.query(User).filter_by(name=='foo').first()
user.name = 'bar'
session.add(user)
session.commit() #validation not working here
Run Code Online (Sandbox Code Playgroud)
存储新用户时,验证有效,但更新现有用户时,验证无效
问:如何在使用@validates 更新其值时验证表列?
谢谢 :)
我有一个包含姓名和图片的表格
MyForm的:
name = TextField(
u'name',
validators=[
validators.DataRequired(),
validators.Length(min=1, max=25)
]
)
pictures = FileField(
u'pictures',
validators=[
FileRequired(),
FileAllowed(['jpg', 'png'], 'Images only!')
]
)
Run Code Online (Sandbox Code Playgroud)
Jinja2模板:
{% from "_form_helpers.tpl" import render_field %}
<form method="post" action="" enctype="multipart/form-data">
<dl>
{{ render_field(form.name) }}
{{ render_field(form.pictures) }}
</dl>
<p>{{ form.submit }}
</form>
Run Code Online (Sandbox Code Playgroud)
我想在一个字段中上传一个或多个图片(多选).
这该怎么做?
谢谢..
如何在自定义用户模型中删除users表和User类中的密码?
我正在使用django-rest-framework令牌认证,所以我不需要密码字段.
这是我的模型:
class CustomUserManager(BaseUserManager):
def create_user(phone, name=None):
return User.objects.create(
name=name, phone=phone)
def create_superuser(name, phone=None):
pass
class User(AbstractBaseUser):
"""
Custom django User model.
"""
name = models.CharField(max_length=30,
null=True, validators=[validate_name])
phone = PhoneNumberField(unique=True, blank=False, null=False)
objects = CustomUserManager()
USERNAME_FIELD = 'phone'
REQUIRED_FIELDS = []
Run Code Online (Sandbox Code Playgroud) python django django-models django-users django-rest-framework
让我先向您展示我的代码:
在settings.py
....
DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
....
Run Code Online (Sandbox Code Playgroud)
我的my_view.py:
@api_view(['POST'])
@permission_classes((AllowAny,))
def say_hello(request):
return Response("hello")
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我默认使用令牌身份验证来保护我的其他 API,但是当我在 中添加令牌标头时say_hello,Django Rest Framework 也会检查令牌是否有效,即使我添加AllowAny权限类也是如此。
我的问题是,如果令牌标头存在于say_hello?中,如何使 Django Rest Framework 忽略检查令牌?这样做有什么安全考虑吗?
谢谢。
假设我有这条路线:
app.add_url_rule('/',
view_func=index,
methods=['GET'])
app.add_url_rule('login',
view_func=login,
methods=['GET', 'POST'])
@validate_access()
def index():
#......
@validate_access()
def login():
#......
Run Code Online (Sandbox Code Playgroud)
我有2个端点与相同的装饰"@validate_access".当我运行这个代码时,我得到了
AssertionError: View function mapping is overwriting an existing endpoint function: wrapperAssertionError: View function mapping is overwriting an existing endpoint function: wrapper
Run Code Online (Sandbox Code Playgroud)
我不知道它是不是一个bug.但如果有解决方案,请通知我.
谢谢 :)
如何使用magnific-popup从我的服务器检索和弹出html5视频,而不是从youtube,vimo等获取视频?
<video width="500" height="350" controls>
<source src="/static/video/bunny.mp4" type="video/mp4" />
Your browser does not support this video format.
</video>
Run Code Online (Sandbox Code Playgroud)
谢谢。
这是一个简单的注册应用程序
schema.rb
create_table "users", :force => true do |t|
t.string "email"
t.string "password_hash"
t.string "password_salt"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
Run Code Online (Sandbox Code Playgroud)
User.rb
attr_accessible :email, :password, :password_confirmation
attr_accessor :password
before_save :encrypt_password
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_uniqueness_of :email
.
.
.
Run Code Online (Sandbox Code Playgroud)
为什么在attr_accessible和attr_accessor中都使用密码?
当我删除attr_accessor:password时,在rails控制台中,我在执行时遇到错误:
user = User.new
user.password # => no method error
Run Code Online (Sandbox Code Playgroud)
但是当我执行这个:
user = User.new
user.email # => nil
Run Code Online (Sandbox Code Playgroud)
这意味着user.email在没有在attr_accessor中添加的情况下工作,为什么?!!
这也有效:
user = User.new
user.password_confirmation # => nil
Run Code Online (Sandbox Code Playgroud)
但当我删除:
validates_confirmation_of :password
Run Code Online (Sandbox Code Playgroud)
它不会起作用,为什么?
python ×5
django ×2
flask ×2
decorator ×1
django-users ×1
python-2.7 ×1
ruby ×1
sqlalchemy ×1
wtforms ×1