我想要实现以下目标:
我设法使第一个工作,但第二个我不知道为什么它不工作.以下是我的代码.
HTML
<form method="post" {% if action %} action="{{ action }}" {% endif %} role="form" enctype="multipart/form-data">
<!-- Modal -->
<div class="modal fade" id="confirmationModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Confirmation</h4>
</div>
<div class="modal-body">
{{ confirm | default: "Would you like to proceed?" }}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" id="submit-main-form" class="btn btn-primary">
<i class="fa fa-save"></i> {{ submit_text | default: …Run Code Online (Sandbox Code Playgroud) 我尝试在Django Docs中查找是否可以找到与 ModelForm 中的实例类似的参数,但无法使其工作。
class RequiredFormSet(BaseFormSet):
def __init__(self, *args, **kwargs):
super(RequiredFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
OfferItemFormSet = formset_factory(OfferItemForm, formset=RequiredFormSet)
Run Code Online (Sandbox Code Playgroud)
class OfferItemForm(ModelForm):
class Meta:
model = OfferItem
exclude = ('offer', 'item_code', 'type')
[...]
Run Code Online (Sandbox Code Playgroud)
i = OfferItem.objects.filter(offer=o).values()
item_formset = OfferItemFormSet(queryset=i)
Run Code Online (Sandbox Code Playgroud)
我总是__init__() got an unexpected keyword argument 'queryset'。我尝试从 formset_factory 更改为 modelformset_factory 但仍然存在同样的问题。
Traceback:
File "/Library/Python/2.7/site-packages/Django-1.8.3-py2.7.egg/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/Django-1.8.3-py2.7.egg/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs) …Run Code Online (Sandbox Code Playgroud) 我正在尝试自定义PasswordResetForm形式django.contrib.auth.views.password_reset.我从Django的网站或一个GitHub复制代码,并将其放在我的forms.py中.我更改了代码:
email = forms.EmailField(label=_("Email"), max_length=254)
Run Code Online (Sandbox Code Playgroud)
至
email = forms.EmailField(label=_("Email"), max_length=254, widget=forms.EmailInput(attrs={'placeholder': 'E-mail'}))
Run Code Online (Sandbox Code Playgroud)
并保持其余PasswordResetForm代码完好无损.
url(r'^password/reset/$','django.contrib.auth.views.password_reset', {'post_reset_redirect': '/password/reset/done/', 'password_reset_form': 'forms.PasswordResetForm',}, name="password_reset"),
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Exception Location: /Library/Python/2.7/site-packages/Django-1.8.3-py2.7.egg/django/contrib/auth/views.py in password_reset, line 185
185. form = password_reset_form()
Run Code Online (Sandbox Code Playgroud)
我没有这个定制工作.我需要定制,因为我想PlaceHolder在现场.如果我删除网址中的密钥,它的工作原理.
我想向我的 forms.Form 添加一个实例参数,这样我可以在视图中初始化它并在我的表单中获得预期的结果。我知道我可以使用'initial',但我想尝试一些不同的东西。
city_form = CityForm(instance=user.profile.city)
Run Code Online (Sandbox Code Playgroud)
class CityForm(forms.Form):
post_nr = forms.CharField(max_length=5, widget=forms.TextInput(attrs={'placeholder': 'Post nr.'}))
city = forms.CharField(required=False, max_length=30, widget=forms.TextInput(attrs={'placeholder': 'By', 'readonly': True}))
class Meta:
model = City
def __init__(self, *args, **kwargs):
self.instance = kwargs.pop('instance', None)
if self.instance:
self.fields['post_nr'] = self.instance.post_code
self.fields['city'] = self.instance.name
super(CityForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
引用的实例将是一个 City 对象,来自我的 City 类,它具有我上面指定的变量。
但我得到:
“CityForm”对象没有属性“field”
我设法设置 allauth 来处理我的项目并使用社交媒体登录。不过我想知道他们是否有任何选项可以将获取 Facebook 的电子邮件设置为用户名。我阅读了他们的文档,但在变量中看不到任何内容。
我找到了这个链接,但是他们改变了 Django 的核心文件。我希望能找到更合适的东西。
我当前的配置:
ACCOUNT_USER_MODEL_EMAIL_FIELD = 'email'
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'email'
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
Run Code Online (Sandbox Code Playgroud)
另外,是否可以仅使用 Allauth 的社交媒体登录/创建?我可以看到,如果您访问 localhost/accounts/create/ (或类似的网址),则可以创建一个帐户。我不需要它,因为我有自己的帐户创建页面。