我正在尝试为我的 django 网站创建一个编辑帐户页面。我正在尝试使用稍作修改的注册表单,因为信息基本上都是相同的。我遇到的问题是,当用户单击更新时,django 甚至会检查唯一的用户名,如果用户名相同,则返回以下错误。如果他们不更改它,它应该检查字段值是否等于登录的用户名并跳过它。
“具有该用户名的用户已存在”
到目前为止,我已经重写了 clean 方法,通过 request.user 传递到表单,并检查登录的用户名是否与字段用户名相同。查看其他堆栈溢出问题,似乎人们只是 del self._errors['username'] 但我遇到了一个关键错误。self._errors 甚至没有实例化。我还尝试将“Unique”属性设置为 false,但它仍然给我错误。我迷路了所以任何帮助将不胜感激。
我的表格类:
class updateAccount(forms.ModelForm):
username = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Username'}))
email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Email Address'}))
first_name = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'First Name'}))
last_name = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'Last Name'}))
class Meta:
model = User
fields = ('username','email','first_name','last_name')
exclude = ('password',)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
super(updateAccount, self).__init__(*args, **kwargs)
def clean(self):
if self.request.user.username == self.cleaned_data.get('username'):
self.fields['username'].required = False
super(updateAccount, self).clean()
return self.cleaned_data
def save(self, commit=True): …Run Code Online (Sandbox Code Playgroud) 我已经添加了下面的代码。生日字段显示在我的帐户页面和 WP 管理员用户页面中,但问题是日期没有保存。
到目前为止我所拥有的
function iconic_get_account_fields() {
return apply_filters( 'iconic_account_fields', array(
'user_url' => array(
'type' => 'date',
'label' => __( 'My Birth Date', 'iconic' ),
'placeholder' => __( 'Date of Birth', 'iconic' ),
'required' => true,
),
) );
}
/**
* Add fields to registration form and account area.
*/
function iconic_print_user_frontend_fields() {
$fields = iconic_get_account_fields();
foreach ( $fields as $key => $field_args ) {
woocommerce_form_field( $key, $field_args );
}
}
add_action( 'woocommerce_edit_account_form', 'iconic_print_user_frontend_fields', 10 ); // …Run Code Online (Sandbox Code Playgroud) 我在“我的帐户”页面中有多个字段,因此,我想为出生日期添加其他字段。
我正在使用“将生日字段添加到我的帐户和管理员用户页面”的一部分
该字段显示但位于底部。
我想在 2 个现有字段之后添加 DOB 字段,我尝试使用“优先级 => 20”,但它不起作用。
// Add field - my account
function action_woocommerce_edit_account_form() {
woocommerce_form_field( 'birthday_field', array(
'type' => 'date',
'label' => __( 'My Birth Date', 'woocommerce' ),
'placeholder' => __( 'Date of Birth', 'woocommerce' ),
'required' => true,
), get_user_meta( get_current_user_id(), 'birthday_field', true ));
}
add_action( 'woocommerce_edit_account_form', 'action_woocommerce_edit_account_form' );
// Validate - my account
function action_woocommerce_save_account_details_errors( $args ){
if ( isset($_POST['birthday_field']) && empty($_POST['birthday_field']) ) {
$args->add( 'error', __( 'Please provide a birth date', …Run Code Online (Sandbox Code Playgroud) 在余额托盘中,配置特征有一项定义如下type AccountStore: StoredMap<Self::AccountId, AccountData<Self::Balance>>;:这对我来说有点奇怪,因为我期望一个普通的存储映射来存储从AccountId到 的映射AccountData,但在查看文档后,StoredMap我意识到这也是在 StorageMaps 上实现的一个特征。现在这更有意义了,所以我继续看看运行时如何定义这个字段,令我惊讶的是我在runtime/src/lib.rs:中找到了它type AccountStore = System;。现在我以前从未见过这样的运行时定义,因为如果我是正确的,System它应该代表frame_system托盘。所以我去查看frame_system::Config运行时,发现了这个定义:
type AccountData = pallet_balances::AccountData<Balance>;。
现在我不知道这些定义是如何进入pallet_balances's Configimpl 的,但我可以看到 FRAMESystem托盘包含两种类型,即:一种类型AccountData和一种类型AccountId。
最后我的两个问题是:
type AccountStore = System;具体类型如何判断呢?我正在尝试创建一个JavaScript,它将自动按第三方网站上的“提交”按钮。基本上,如果我想使用包含用户名和密码的Cookie自动登录到站点(例如Google帐户),则javascript将自动按“提交”按钮,而无需我这样做。
在网页中使用登录功能时,验证输入数据的最佳做法是什么?
我不是在谈论大规模的用户,而只是一个管理员角色.该网页没有使用任何数据库,因此我不想仅为一个帐户包含funtionallity.
目前我只使用带有输入数据和硬编码密码的If语句,这在某种程度上感觉不安全但同时用户无法看到php代码,只要他们没有到达服务器,或者我错了?
if($password == 'myPassword123')
Run Code Online (Sandbox Code Playgroud)
顺便说一句,有没有办法从服务器下载实际的.php文件(从用户的角度来看).
我想将我的客户帐户页面设置为1列页面布局,然后将customer_account_navigation从左侧移动到内容顶部.关于如何轻松做到这一点的任何想法/方法?多谢你们!
我想在c#.net中使用示例应用程序,它可以使用Microsoft API在Office 365中创建用户.
我希望在代码中执行它,而不是使用Powershell.
在WooCommerce中,我已经能够在“编辑帐户”页面中添加自定义字段。我尝试添加第二个自定义字段“ Favorite Color 2”,但无法正常工作,这是我做错了。
如何在“编辑帐户”页面中添加/保存其他自定义字段?
// Add the custom field "favorite_color"
add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' );
function add_favorite_color_to_edit_account_form() {
$user = wp_get_current_user();
?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="favorite_color"><?php _e( 'Favorite color', 'woocommerce' ); ?>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="favorite_color" id="favorite_color" value="<?php echo esc_attr( $user->favorite_color ); ?>" />
</p>
<?php
}
// Save the custom field 'favorite_color'
add_action( 'woocommerce_save_account_details', 'save_favorite_color_account_details', 12, 1 );
function save_favorite_color_account_details( $user_id ) {
// For Favorite color
if( isset( $_POST['favorite_color'] ) )
update_user_meta( $user_id, …Run Code Online (Sandbox Code Playgroud)