jquery - Django 表单未显示在 Bootstrap 模式中

标签 jquery python django twitter-bootstrap

我已经解决这个问题一个多星期了,但没有成功。我有一个注册表单,我想将其放入模式中。模式呈现得很好,标题、提交按钮,但注册表本身没有显示。

但是,当我在浏览器中转到 mysite/register 时,注册表单会完美呈现......但我不希望它在单独的选项卡中单独呈现,我需要它在模式中。

任何帮助将不胜感激。

这是我的代码:

表单.py

from django import forms
from apps.accounts.models import CustomUser


class RegistrationForm(forms.ModelForm):
    email = forms.EmailField(widget=forms.TextInput, label='email')
    username = forms.CharField(widget=forms.TextInput, label='username')
    password1 = forms.CharField(widget=forms.PasswordInput, label='Enter your password')
    password2 = forms.CharField(widget=forms.PasswordInput, label='Re-type your password')
    first_name = forms.CharField(widget=forms.TextInput, label='First Name')
    last_name = forms.CharField(widget=forms.TextInput, label='Last Name')

    class Meta:
        model = CustomUser
        fields = ['email', 'username', 'password1', 'password2', 'first_name', 'last_name']

    def clean(self, password1, password2):
        cleaned_data = super(RegistrationForm, self).clean()
        if password1 in self.cleaned_data and password2 in self.cleaned_data:
            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                raise forms.ValidationError("Passwords don't match. Please enter both fields again")
    return self.cleaned_data

    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        if commit:
            user.save()
        return user

View .py

def register(request):
    """
    User Registration View
    """
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            CustomUser = form.save()
            CustomUser.save()
            return redirect('home.html')
    else:
        form = RegistrationForm()
    return render_to_response('register.html', {
        'form': form,
    }, context_instance=RequestContext(request))

def get_profile(request, username):
    user = CustomUser.objects.get(pk=1).username

    return render_to_response(request, 'profile.html', {'username': username, 'user': user})

url.py

urlpatterns = patterns ('', 
    url(r'register$', 'apps.accounts.views.register', name='register'),
    url(r'^profile/(?P<username>\w+/$)', get_profile, name='profile'),
)

注册.html

{% load staticfiles %}
{% load crispy_forms_tags %}



{% block body %}

<div class="modal" id="modal-1">
            <div class="modal-dialog">
                <div class="modal-content">
                    <form enctype="multipart/form-data" method="post" action="">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                            <h3 class="modal-title">Sign-up</h3>
                        </div>
                        <div class="modal-body">
                            {% csrf_token %}
                            {{ form|crispy }}
                        </div>
                        <div class="modal-footer">
                            <input type='submit' class="btn btn-primary" value="Register" />
                        </div>
                    </form>
                </div>
            </div>
</div>

{% endblock %}

base.html

.....
<li><a data-toggle="modal" data-target="#modal-1" href="">sign up</a></li>
{% include 'register.html' %}

最佳答案

不确定帖子中的缩进是否与views.py文件中的缩进相同,但至少这里是错误的,并且表单没有被渲染。

试试这个:

def register(request):
    form = RegistrationForm(request.POST or None)
    if request.method == 'POST':        
        if form.is_valid():
            CustomUser = form.save()
            CustomUser.save()
            return redirect('home.html')
    else:
        return render(request, 'register.html', {'form': form})

关于jquery - Django 表单未显示在 Bootstrap 模式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056632/

相关文章:

javascript - ASP.NET WebForm 中的 jQueryMobile

javascript - 无法将 Bootstrap 4、jQuery 和 PopperJS 库添加到 .angular-cli.json

jquery - 在 Chrome 中使用 jquery 的文本输入时未触发更改事件

python - 我如何在 numpy 中将这个三重循环向量化为二维数组?

python - 模块未找到错误: No module named 'flask'

python - Django-cities 退出时显示 "killed"

javascript - CSS 相对背景在插入 html 代码时不会扩展

python - 向 Pandas 索引添加一个值

django - 如何将 "Add Another"链接按钮内联移动到顶部 Django Admin

django - 无法从主机访问 VMWare guest Web 服务器