我正在使用django-registration和django-profile来处理注册和配置文件.我想在注册时为用户创建个人资料.我创建了一个自定义注册表单,并使用以下教程将其添加到urls.py:
本教程中的基本思想是覆盖默认注册表单以同时创建配置文件.
forms.py - 在我的个人资料应用中
from django import forms
from registration.forms import RegistrationForm
from django.utils.translation import ugettext_lazy as _
from profiles.models import UserProfile
from registration.models import RegistrationProfile
attrs_dict = { 'class': 'required' }
class UserRegistrationForm(RegistrationForm):
city = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))
def save(self, profile_callback=None):
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'])
new_profile = UserProfile(user=new_user, city=self.cleaned_data['city'])
new_profile.save()
return new_user
Run Code Online (Sandbox Code Playgroud)
在urls.py中
from profiles.forms import UserRegistrationForm
Run Code Online (Sandbox Code Playgroud)
和
url(r'^register/$',
register,
{'backend': 'registration.backends.default.DefaultBackend', 'form_class' : UserRegistrationForm},
name='registration_register'),
Run Code Online (Sandbox Code Playgroud)
显示表单,我可以在City中输入,但不会在DB中保存或创建条目.
我需要为用户组实现用户权限(非常类似于facebook组).例如,每个组可以拥有具有以下权限的成员:can_post,can_delete,can_ban等.当然,一个用户可以是许多组的成员,并且组可以拥有许多具有不同权限的不同用户.我需要什么型号才能使用此功能?
你如何在Django中定义一个特定的顺序QuerySet?
具体来说,如果我有QuerySet这样的话:['a10', 'a1', 'a2'].
定期订购(使用Whatever.objects.order_by('someField'))会给我['a1', 'a10', 'a2'],而我正在寻找:['a1', 'a2', 'a10'].
定义我自己的排序技术的正确方法是什么?
我正在编写一个Django应用程序,它将获取特定URL的所有图像并将它们保存在数据库中.
但我没有介绍如何在Django中使用ImageField.
Settings.py
MEDIA_ROOT = os.path.join(PWD, "../downloads/")
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "htp://media.example.com/"
MEDIA_URL = '/downloads/'
Run Code Online (Sandbox Code Playgroud)
models.py
class images_data(models.Model):
image_id =models.IntegerField()
source_id = models.IntegerField()
image=models.ImageField(upload_to='images',null=True, blank=True)
text_ind=models.NullBooleanField()
prob=models.FloatField()
Run Code Online (Sandbox Code Playgroud)
download_img.py
def spider(site):
PWD = os.path.dirname(os.path.realpath(__file__ ))
#site="http://en.wikipedia.org/wiki/Pune"
hdr= {'User-Agent': 'Mozilla/5.0'}
outfolder=os.path.join(PWD, "../downloads")
#outfolder="/home/mayank/Desktop/dreamport/downloads"
print "MAYANK:"+outfolder
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup =bs(page)
tag_image=soup.findAll("img")
count=1;
for image in tag_image:
print "Image: %(src)s" % image
filename = …Run Code Online (Sandbox Code Playgroud) 我会稍微简化一下情况.假设我有一个名为Lab的模型.
from django.db import models
class Lab(models.Model):
acronym = models.CharField(max_length=20)
query = models.TextField()
Run Code Online (Sandbox Code Playgroud)
该领域query几乎总是与该领域相同acronym.因此,我希望在Django管理界面query的acronym字段中输入文本后自动填写该字段.此任务必须由jQuery脚本执行.
所以,如果我举个例子:你想通过Django管理界面向数据库添加一个新的实验室.单击"添加"按钮,然后使用两个字段登陆空白表单.您可以手动acronym使用诸如此类的值填充该字段,ABCD然后该query字段应以相同的值自动完成,这意味着ABCD.
我该怎么办?
我有一个带有文章的数据库
submitter = models.ForeignKey(User, editable=False)
Run Code Online (Sandbox Code Playgroud)
凡User进口如下:
from django.contrib.auth.models import User.
Run Code Online (Sandbox Code Playgroud)
我想在特定用户提交文章时自动将当前活动用户插入提交者字段.
有人有什么建议吗?
我正在尝试将django.contrib.auth用户与我自己的UserProfile连接,当我访问该网站时,我收到了"AlreadyRegistered"错误.
这是追溯:
Environment:
Request Method: GET
Request URL: myurl.com/django/appname/
Django Version: 1.4.2
Python Version: 2.6.8
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'polls',
'appname',
'registration',
'django.contrib.humanize')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
File "/var/www/mysite/mysite/urls.py" in <module>
3. …Run Code Online (Sandbox Code Playgroud) 我试图计算一个玩家每周玩的次数如下:
player.game_objects.extra(
select={'week': 'WEEK(`games_game`.`date`)'}
).aggregate(count=Count('week'))
Run Code Online (Sandbox Code Playgroud)
但是Django抱怨说
FieldError: Cannot resolve keyword 'week' into field. Choices are: <lists model fields>
Run Code Online (Sandbox Code Playgroud)
我可以在这样的原始SQL中做到这一点
SELECT WEEK(date) as week, COUNT(WEEK(date)) as count FROM games_game
WHERE player_id = 3
GROUP BY week
Run Code Online (Sandbox Code Playgroud)
如果没有在Django中执行原始SQL,有没有一个好方法呢?
据我所知,当一个人创建一个Django应用程序时,在将表单插入到模型实例中然后将其写入数据库之前,表单会对数据进行验证.但是如果我想在数据模型层创建一个额外的保护层,那么我在目前的"最佳实践"下面做了什么?我正在努力确保评论者的名字不能被省略,也不能留空.我应该在'clean'方法中进行任何自定义验证,就像我在这里做的那样然后'保存'调用'full_clean'调用'clean'?如果不是,那么首选方法是什么?谢谢.
class Reviewer(models.Model):
name = models.CharField(max_length=128, default=None)
def clean(self, *args, **kwargs):
if self.name == '':
raise ValidationError('Reviewer name cannot be blank')
super(Reviewer, self).clean(*args, **kwargs)
def full_clean(self, *args, **kwargs):
return self.clean(*args, **kwargs)
def save(self, *args, **kwargs):
self.full_clean()
super(Reviewer, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud) 在我的Django(1.2)项目中,我想在模型中预填充一个字段,但我的新值被忽略了.这是片段:
class ArtefactForm(ModelForm):
material = CharField(widget=AutoCompleteWidget('material', force_selection=False))
def __init__(self, *args, **kwargs):
super(ArtefactForm, self).__init__(*args, **kwargs)
self.fields['material'].initial = 'Test'
Run Code Online (Sandbox Code Playgroud)
我也试过self.base_fields,但没有效果:表格中始终显示数据库值.有任何想法吗?
django ×10
python ×10
django-forms ×2
admin ×1
django-admin ×1
jquery ×1
mysql ×1
profile ×1
registration ×1
usergroups ×1