所以我有自己的看法:
def home_page(request):
form = UsersForm()
if request.method == "POST":
form = UsersForm(request.POST)
if form.is_valid():
form.save()
c = {}
c.update(csrf(request))
c.update({'form':form})
return render_to_response('home_page.html', c)
Run Code Online (Sandbox Code Playgroud)
我的forms.py:
class UsersForm(forms.ModelForm):
class Meta:
model = Users
widgets = {'password':forms.PasswordInput()}
def __init__(self, *args, **kwargs):
super( UsersForm, self ).__init__(*args, **kwargs)
self.fields[ 'first_name' ].widget.attrs[ 'placeholder' ]="First Name"
self.fields[ 'last_name' ].widget.attrs[ 'placeholder' ]="Last Name"
self.fields[ 'password' ].widget.attrs[ 'placeholder' ]="Password"
Run Code Online (Sandbox Code Playgroud)
和我的模板:
<html>
<body>
<form method="post" action="">{% csrf_token %}
{{ form.first_name }} {{form.last_name }} <br>
{{ form.password }} <br>
<input …Run Code Online (Sandbox Code Playgroud) django django-templates django-models django-forms django-errors
从我阅读过的所有HTML书籍中,我知道在更改,添加或从数据库中删除以及处理诸如密码之类的敏感信息时,应使用POST。当您只想搜索数据库而不进行任何更改时,应使用GET。话虽如此,我现在正在读一本有关Django的书,直到现在,为了处理表单,我们是这样做的:
def RegistrationFormView(request):
form = RegistrationForm()
if request.method == "POST": #if the user has clicked the 'submit' button on the form and is sending data
form = RegistrationForm(request.POST)
Run Code Online (Sandbox Code Playgroud)
这是有道理的。本书继续讲授如何创建一个搜索页面,以搜索数据库。为此,我们使用GET,这很有意义。形式如下:
class SearchForm(forms.Form):
query = forms.CharField(
label='Enter a keyword to search for',
widget=forms.TextInput(attrs={'size': 32})
)
Run Code Online (Sandbox Code Playgroud)
但这是视图(这就是使我困惑的地方):
def search_page(request):
form = SearchForm()
bookmarks = []
show_results = False #Only show results if the user has searched something
if request.GET.has_key('query'): #check if the user submitted GET data
show_results = True #return results since the …Run Code Online (Sandbox Code Playgroud) 我做了Pillow
pip install Pillow
Run Code Online (Sandbox Code Playgroud)
我没有安装PIL.安装Pillow后,它说:
ZLIB (PNG/ZIP) support not available
Run Code Online (Sandbox Code Playgroud)
当我尝试创建PNG图像的缩略图时,它给出了一个错误说法
IOError at /createThumbnail/
decoder zip not available
Run Code Online (Sandbox Code Playgroud)
我阅读了Pillow文档(http://pillow.readthedocs.org/en/latest/handbook/image-file-formats.html#png),它说为了获得PNG支持,我需要"构建和安装"构建Python映像库之前的ZLIB压缩库.有关详细信息,请参阅分发自述文件".我阅读了原始的PIL自述文件(http://pillow.readthedocs.org/en/latest/original-readme.html),它说要安装
sudo apt-get install zlib1g-dev
Run Code Online (Sandbox Code Playgroud)
我这样做了,Pillow仍然不支持PNG文件.我甚至尝试重新安装枕头,但这也不起作用.知道如何让Pillow支持PNG文件吗?
编辑:我从这里下载zlib:http: //zlib.net/
然后按照这里的说明操作:http: //petio.org/tools/zlib.html
我基本上只是提取下载的文件,然后从目录中运行这些代码:
$ ./configure -s --prefix=/usr
$ make
$ sudo su
make install
Run Code Online (Sandbox Code Playgroud)
然后我卸载并重新安装Pillow,它现在支持PNG,但是,我仍然得到完全相同的错误消息(解码器zip不可用)..任何想法为什么?
这是我的html:
<div class='parentDiv'>
<div class='childDiv'></div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的CSS:
.parentDiv {
margin-top: 200px;
width: 700px;
height: 800px;
background-color: red;
}
.childDiv {
background-color: green;
width: 50px;
height: 50px;
margin-top: 22px;
}
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/1whywvpa/
childDiv为何无法获得22px的页边空白?如果像素大于已经提供给parentDiv的200像素,则它只会获得页边空白。有什么办法可以使childDiv相对于parentDiv获得22px的父级div,而无需进行某种类型的“给父div一个1px的填充”黑客?
这是我的serializers.py(我想为内置的User模型创建一个序列化器):
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email', )
def validate_username(self, username):
if not re.search(r'^\w+$', username): #checks if all the characters in username are in the regex. If they aren't, it returns None
raise serializers.ValidationError('Username can only contain alphanumeric characters and the underscore.')
try:
User.objects.get(username=username)
except ObjectDoesNotExist:
return username
raise serializers.ValidationError('Username is already taken.')
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试使用已存在的用户名创建用户时,它会返回以下字典:
{'username': [u'This field must be unique.']}
Run Code Online (Sandbox Code Playgroud)
而不是说
{'username': [u'Username is already taken']} …Run Code Online (Sandbox Code Playgroud) django error-handling django-models django-serializer django-rest-framework
这是我的 CSS:
@media(max-width:767px){body { font-size: 22px; }}
@media(min-width:768px){body { font-size: 20px; }}
@media(min-width:992px){body { font-size: 16px; }}
Run Code Online (Sandbox Code Playgroud)
当我在笔记本电脑上调整浏览器窗口的大小时,它会正确调整大小。但这是我的问题:当我从我的移动设备访问我的网站时,字体大小太小(我不知道为什么我的移动设备上的 22px 太小了,我必须放大才能看到正确)。当我将较小屏幕宽度的字体大小增加到 40px 时,它在我的移动设备上看起来不错,但是当我从笔记本电脑访问网站并将浏览器窗口调整为较小的宽度时,40px 太大了并且结束了up 占据了整个屏幕。
我的移动设备上的 22px 看起来很小。有没有办法(使用 Bootstrap 或纯 CSS)来解决这个问题?通过问题,我的意思是,22px 太小了,但 40px 在我的移动设备上是完美的。然而,在我的电脑上正好相反(22px 是完美的,但 40px 太大了)。
想了想,我觉得插入和搜索任何数据结构的时间复杂度应该是一样的,因为要插入,首先要搜索到要插入的位置,然后才能插入。
根据这里:http : //bigocheatsheet.com/,对于链表,搜索是线性时间,但插入是常数时间。我理解搜索是如何线性的(从前面开始,然后一个接一个地遍历链表上的节点,直到找到要搜索的内容),但是插入常数时间如何?
假设我有这个链表:
1 -> 5 -> 8 -> 10 -> 8
Run Code Online (Sandbox Code Playgroud)
我想在数字8后面插入数字2,那么我是否必须先搜索数字8(搜索是线性时间),然后再多走2步来插入它(所以,插入仍然是线性时间? )?
#insert y after x in python
def insert_after(x, y):
search_for(y)
y.next = x.next
x.next = y
Run Code Online (Sandbox Code Playgroud)
编辑:即使对于双向链表,它不应该仍然首先搜索节点(这是线性时间),然后插入吗?
这是我的 URLs.py:
url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')),
Run Code Online (Sandbox Code Playgroud)
我的主页上有一个表单,用户可以在其中键入用户名和密码。当提交按钮被点击时,AngularJS 使用用户对象(用户名和密码)向“api-auth/login/”发送一个 POST 请求:
$http.post("/api-auth/login/", self.loginuser)
.error(function(data, status, headers, config) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
当用户提交不正确的用户名和密码(用户名和密码不存在或不匹配)时,Django Rest Framework 返回 200 OK 而不是 204 No Content、404 或 401 Unauthorized(在这篇文章中,它说 401是要返回的正确状态代码:如果用户尝试使用不正确的用户名/密码但格式正确登录,要返回的适当 HTTP 状态代码是什么?)。
根据这里:http : //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html在第 9.5 节 POST 中,它说“在这种情况下,200(OK)或 204(无内容)是适当的响应状态,取决于响应是否包含描述结果的实体。”
如果数据存在,我会处理错误并记录数据(我在 JS 中做了 console.log(data)),但没有记录数据,这意味着(据我了解)没有数据发送/响应不包含描述的实体结果。
那么 DjangoRestFramework 为什么会返回 200 而不是 204 No Content(或者 404 或 401,根据我链接到的其他 SO 帖子应该返回什么)?
我的模型是这样的:
class Post(models.Model):
user = models.ForeignKey(User)
post = models.CharField(max_length=400)
subject = models.ForeignKey(Subject, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
这是我的序列化器:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('user', 'post', 'subject')
def create(self, validated_data):
post = Post(
user = User.objects.get(username='A'),
post = validated_data['post'],
)
Run Code Online (Sandbox Code Playgroud)
在这一点上,我想检查最终用户是否提供了“主题”,如果是,则添加字段,然后保存发布对象(否则,保存发布对象而不添加“主题”字段)。我打开python shell并执行以下操作:
p = PostSerializer(data={'user':16, 'post':'p'})
p.is_valid()
# returned True
if p.validated_data['subject']:
print('exists')
else:
print('does not exist')
Run Code Online (Sandbox Code Playgroud)
这将返回一条错误消息:
Traceback (most recent call last):
File "<console>", line 1, in <module>
KeyError: 'subject'
Run Code Online (Sandbox Code Playgroud)
这么说,检查经过验证的字段是否存在的正确方法是什么?
在这里:https : //docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior它说%p显示 AM / PM。它显示了这个
AM, PM (en_US);
am, pm (de_DE)
Run Code Online (Sandbox Code Playgroud)
我不确定是什么de_DE,但是当我%p使用 Django Rest Framework 时,它以大写字母显示 AM 和 PM。如何更改它以便 am 和 pm 以小写显示?
这是我settings.py编辑日期时间格式的DRF代码(可能没有用):
#added REST_FRAMEWORK
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DATETIME_FORMAT': "%b %d at %I:%M %p"
}
Run Code Online (Sandbox Code Playgroud)