我创建了一个模型Student,它从Django User扩展而来,是另一个模型的外键,而它有一个名为year的整数字段.我想要做的是保存一个有两个字段的表单.一个是课程ID,另一个是整数字段年份.当我点击提交时,我收到错误无法分配"u'2":"Student.course"必须是"课程"实例.
models.py
class Student(models.Model):
user = models.OneToOneField(User)
course = models.ForeignKey(Course)
year = models.IntegerField(validators=[MinValueValidator(1),
MaxValueValidator(7)])
Run Code Online (Sandbox Code Playgroud)
view.py
def step3(request):
user = request.user
if request.method == 'POST':
form = SelectCourseYear(request.POST)
if form.is_valid():
form.save()
return render_to_response("registration/complete.html", RequestContext(request))
else:
form = SelectCourseYear()
return render(request, 'registration/step3.html',)
Run Code Online (Sandbox Code Playgroud)
forms.py
class SelectCourseYear(forms.ModelForm):
course = forms.CharField()
year = forms.IntegerField(required=True)
class Meta:
model = Student
fields = ['user', 'course', 'year']
Run Code Online (Sandbox Code Playgroud) 我创建了一个注册应用程序,用户可以在其中注册提供用户名,电子邮件和密码.我所做的是确保电子邮件字段是唯一的(如下面的代码所示).但是,如果用户输入已在使用的电子邮件地址,我无法弄清楚如何显示错误.
from django.shortcuts import render
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
from forms import RegistrationForm
# Create your views here.
def register_user(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('../../membership/register_success')
else:
return HttpResponseRedirect('../../membership/register_failed')
args = {}
args.update(csrf(request))
args['form'] = RegistrationForm()
return render(request,'registration/registration_form.html', args)
def register_success(request):
return render_to_response('registration/registration_success.html')
def register_failed(request):
return render_to_response('registration/registration_failed.html')
Run Code Online (Sandbox Code Playgroud)
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.utils.translation import ugettext_lazy as …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在前面创建一个"编辑配置文件"表单.会发生什么是我的表单(我不是100%肯定)尝试创建用户而不是找到当前用户并更新他的个人资料.所以我认为这就是问题所在.在这里检查了很多问题,但没有一个是清楚的.我正在尝试编辑的字段是电子邮件,名字和姓氏.(另外我想添加uda
forms.py
class UpdateProfile(forms.ModelForm):
username = forms.CharField(required=True)
email = forms.EmailField(required=True)
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name')
def clean_email(self):
username = self.cleaned_data.get('username')
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).exclude(username=username).count():
raise forms.ValidationError('This email address is already in use. Please supply a different email address.')
return email
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
views.py
def update_profile(request):
args = {}
if request.method == 'POST': …
Run Code Online (Sandbox Code Playgroud) 所以我得到了一份简单的登记表.在这种形式中还有3个字段:
我要做的是过滤数据.因此,当用户选择大学时,课程字段(选择)将显示属于该大学的所有课程.此外,当用户选择课程时,模块字段(选择)将显示属于该课程的所有模块.如果你检查图像,你会发现它有点简单.
我设法显示了所有大学,课程和模块,但由于数据不正确(显示所有条目),这是不实际的.我知道如何过滤查询集,但我不知道如何使用AJAX来做到这一点.尝试了很多教程但找不到东西所以我很抱歉没有发布代码.
如果你能指出我正确的教程,示例或给我一些代码来开始工作......
更新
我用Del的例子开始研究它.问题是我对AJAX和JS都不擅长.所以我创建了一个从ajax表单接收请求的视图(现在它只返回所有课程,没有过滤).我遇到的问题是,当我选择大学时,course
选择变为空.所以我猜它不会从视图中获取数据.如果你能看看..
视图
def ajax_get_courses(request):
courses = Course.objects.all()
if request.is_ajax():
data = serializers.serialize('json', courses)
return HttpResponse(data,'json')
else:
return render_to_response('registration/registration_form_teacher.html', {'courses':courses}, context=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
JS
$(document).ready(function(){
$("#university").change(function(){
var request = $.ajax({
url: "{% url 'ajax_get_courses' %}",
type: "POST",
data: { university: $("#university").val(),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
dataType: "html"
});
request.done(function(msg) {
$("#course").html( msg );
});
});
});
Run Code Online (Sandbox Code Playgroud)
更新2
因此,在选择大学之后,选择课程源代码如下:
<select id="course" name="course" class="form-control">[{"pk": 1, "model": "studies.course", "fields": {"attendance": "FT", "name": "Computer Science", "degree": …
Run Code Online (Sandbox Code Playgroud) 我已经将单元格的宽度(UICollectionViewCell)设置为等于UICollectionView的宽度,并且我试图使用包含在该单元格内的UILabel完全相同的事情.我认为下面的代码正好解释了我想要实现的目标.所以我在这里阅读了一些问题以及一些教程,但我仍然不确定如何实现这一目标.
在几个问题中它说的是使用collectionViewLayout
但我真的在如何在我的代码中使用它.有任何想法吗?谢谢!
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as LocationViewCell
cell.locationLabel.text = "Hello there!"
// Set cell & label width to 100%
let collectionViewWidth = self.collectionView.bounds.size.width
cell.frame.size.width = collectionViewWidth // Works
cell.locationLabel.frame.size.width = collectionViewWidth // Does NOT
Run Code Online (Sandbox Code Playgroud)
所以我添加了以下内容:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
// Set cell width to 100%
let collectionViewWidth = self.collectionView.bounds.size.width
return CGSize(width: collectionViewWidth, height: 35)
}
Run Code Online (Sandbox Code Playgroud)
发生的情况是,加载视图时,UILabel的宽度仍然很小.如果我转到另一个视图,然后返回,那么它是100%.所以我必须在viewDidLoad() …
ios uicollectionview uicollectionviewcell uicollectionviewlayout swift
我试图NavigatorIOS
在我index.ios.js
得到的时候使用:
'use strict';
var React = require('react-native');
var Home = require('./App/Components/Home');
var {
AppRegistry,
StyleSheet,
NavigatorIOS
} = React;
var styles = StyleSheet.create({
container:{
flex: 1,
backgroundColor: '#111111'
}
});
class ExampleApp extends React.Component{
render() {
return (
<NavigatorIOS
style={styles.container}
initialRoute={{
title: 'example',
component: Home
}} />
);
}
};
AppRegistry.registerComponent('exampleapp', () => ExampleApp);
module.exports = ExampleApp;
Run Code Online (Sandbox Code Playgroud)
然后在Home.js
:
'use strict';
var React = require('react-native');
var Park = require('./Park');
var {
View,
StyleSheet,
Text,
TouchableHighlight …
Run Code Online (Sandbox Code Playgroud) 我正在尝试User-Agent
在Android上设置React Native.做了一些研究,看起来我应该使用okhttp
拦截器.我发现的一个例子解释了如何做到这一点(链接),但后来我不确定如何注册拦截器.
所以为了设置User-Agent
我正在使用这个类:
public class CustomInterceptor implements Interceptor {
@Override public Response intercept(Interceptor.Chain chain) throws IOException {
Request originalRequest = chain.request();
Request requestWithUserAgent = originalRequest.newBuilder()
.removeHeader("User-Agent")
.header("User-Agent", "Trevor")
.build();
return chain.proceed(requestWithUserAgent);
}
}
Run Code Online (Sandbox Code Playgroud)
那么剩下的就是注册上面的拦截器,以便它应该在哪里完成?也许在MainActivity.java
?
OkHttpClient okHttp = new OkHttpClient();
okHttp.interceptors().add(new CustomInterceptor());
Run Code Online (Sandbox Code Playgroud)
构建应用程序时我没有遇到任何错误,所以我认为CustomInterceptor
应该没问题 - 只需要让应用程序使用它.
更新:我目前正在尝试注册拦截器MainActivity
但它不会接受它:
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Joomla模块中插入脚本.该脚本是JS中的百分比加载器.我和另一个js有一些问题,但我终于设法解决了这些问题.
我得到的错误是:
未捕获的TypeError:对象[对象对象]的属性'$'不是函数(匿名函数)
我正在尝试导入Percentage Loader jQuery插件
而js代码是:
$(function() {
var $topLoader = $("#dttopLoader").percentageLoader({width: 256, height: 256, controllable : true, progress : 0.5, onProgressUpdate : function(val) {
$topLoader.setValue(Math.round(val * 100.0));
}});
var topLoaderRunning = false;
$("#dtanimateButton").click(function() {
if (topLoaderRunning) {
return;
}
topLoaderRunning = true;
$topLoader.setProgress(0);
$topLoader.setValue('0kb');
var kb = 0;
var totalKb = 999;
var animateFunc = function() {
kb += 17;
$topLoader.setProgress(kb / totalKb);
$topLoader.setValue(kb.toString() + 'kb');
if (kb < totalKb) {
setTimeout(animateFunc, 25);
} else {
topLoaderRunning …
Run Code Online (Sandbox Code Playgroud) 我用来填充数据的模拟数据是
"StudentDetails":
[
{
"name": "name1",
"code":"code1",
"fields": {
"username": "username1",
"password": "sample",
"key": 4513345667878
}
},
{
"name": "name2",
"code":"code2",
"fields": {
"username": "username2",
"secretkey": 1213145
}
}
]
Run Code Online (Sandbox Code Playgroud)
我使用以下模板代码填充它
<div ng-repeat="item in StudentDetails">
<div ng-repeat="(key,value) in StudentDetails.fields">
<div></div>
<div><input type="text" ng-model="StudentDetails.fields[key]"/></div></div>
</div>
Run Code Online (Sandbox Code Playgroud)
字段中的参数会针对每个对象进行更改.这里的问题是输入框中的单个按键,输入框失去焦点.我不得不反复点击输入框内部以输入数据.如何在没有框失去焦点的情况下更改输入框中的值.我使用了"按键跟踪"...并尝试在StackOverflow中发布类似问题的各种答案,但这没有帮助请帮助这个场景.. !!
在我的网站上遇到一个奇怪的滚动问题,其中bootstrap datepicker日历不会与其附加的输入框保持一致.我试着用jsfiddle重新创造它.(在框中滚动鼠标滚轮,然后点击输入框查看日历.)我知道它不会出现在前面,但这不是问题,它只是为了娱乐目的.你会注意到它没有正确地滚动输入框,这是我试图解决的问题.
我原来的代码是:
$(".datepicker-input").each(function(){ $(this).datepicker();});
Run Code Online (Sandbox Code Playgroud)
HTML:
<input type="text" class="datepicker-input" />
Run Code Online (Sandbox Code Playgroud)
脚本:
var datePicker = $().datepicker({});
var t;
$(window).on('DOMMouseScroll mousewheel scroll', function() {
window.clearTimeout(t);
t = window.setTimeout(function() {
$('.datepicker-input').datepicker('place');
}, 100);
});
Run Code Online (Sandbox Code Playgroud)
CSS:
html,body {
overflow-x: hidden;
position: relative;
min-height: 100%;
}
.datepicker-input {
margin-top: 250px;
margin-left: 100px;
}
.dropdown-menu {
font-size: 13px;
margin-left: 20px;
}
Run Code Online (Sandbox Code Playgroud)
链接到jsfiddle:http://jsfiddle.net/8C6jT/1/(感谢A. Wolff)
编辑:
此功能是Chrome和IE中的一些有效功能..如果你滚动得太快但它对Firefox不起作用,它仍会导致日历从输入框移开.